1238 字
6 分钟
python
python基础
注释
#/三引号"""……""" 多行注释
字符串与字符串连接
- 字符串连接 +
print("Hello"+"World"+"!")
- 双单引号转义
print('He said "good!"') # 单引号包裹 He said "good"print("He said 'good!'") # 双引号包裹 He said 'good'print("He said \"Let's go!\"") # 转义符 He said "Let's go!"
- 三引号跨行字符串
自换行
print("""HelloWorld""")
- 常用方法
s = "hello"s.upper() # 转大写 HELLOs.lower() # 转小写s.strip() # 去掉首尾空格s.replace("h", "H") # 替换s.split(",") # 按符号分割成列表
格式化字符串
- format()
print("My name is {0},I'm {1} years old".format("Liz", 19))print("My name is {name},I'm {age} years old".format(name="Liz", age=19))name = "Yuzy"age = 20print(f"My name is {name},I'm {age} years old")
- f-字符串
数据类型
- 字符串 str
len("Hello") # 5len("哟! ") # 2len("\n") # 1
- 整型 int、浮点数 float
grade =93.546print("Your grade is: " + f"{grade:.2f}") # Your grade is: 93.55
- 布尔类型
- type 输出数据类型
输入 input
user_name = str(input("请输入用户名:"))条件判断语句
grade = int(input("please input your grade: "))if grade >= 90: print("A")elif grade >= 80: print("B")elif grade >= 65: print("C")else: print("D")循环语句
constants = ("Alice", "Bob", "Charlie", "David", "Eve")for contant in constants: print(contant)
for i in range(5,10): # [5,10) print(i)for i in range(5,10,2): # 5 7 9 步长为2 print(i)
i = 0while i <len(constants): print(constants[i]) i += 1逻辑运算
x = int(input("Enter a number: "))print(not(x>5 and x<10)) # 6 -False;2 - True列表 List
有序、可重复、可扩展
shopping_list = ["milk", "eggs", "bread"]shopping_list.append("bread") # ['milk', 'eggs', 'bread', 'bread']shopping_list.remove("eggs") # ['milk', 'bread', 'bread']len(shopping_list) # 3print(shopping_list[1]) # eggsprint(shopping_list[0:2]) # ['milk', 'eggs']print(shopping_list[0:2]) # ['milk', 'eggs']shopping_list.insert(1, 15) # 指定位置插入shopping_list.pop() # 删除最后一个shopping_list.pop(0) # 删除指定索引shopping_list.clear() # 清空shopping_list.sort() # 对于int排序shopping_list.reverse() # 反转print(shopping_list) # []元组 Tuple
有序、可重复、不可扩展,当作键使用
example_tuple = ("keyboard", "mouse", "monitor")example_tuple.append("printer") # ❌example_tuple.remove("mouse") # ❌# 作为键contacts = { ("Lily",19):"421880110", ("Bob",25):"421880111", ("Tom",30):"421880112"}print(contacts[("Lily",19)]) # 输出:421880110集合 Set
无序、不可重复、可扩展
names = {"Lily","Rose","Daisy","Iris"}print("Lily" in names) # Trueprint(type(names)) # <class 'set'>字典 {}
键 : 值
contacts ={ "Alice": "152-555-1234", "Bob": "152-555-5678",}print(contacts.get("Alice")) # 152-555-1234print(contacts.get("Charlie")) # Noneprint(contacts["Alice"]) # Output: 152-555-1234print("Bob" in contacts) # Output: True# 删除键值对 del 字典名[键]del contacts["Alice"]print(len(contacts)) # Output: 1# 遍历字典for name in contacts: print(name, contacts[name])# 所有键print(contacts.keys()) # Output: dict_keys(['Bob'])# 所有值print(contacts.values()) # Output: dict_values(['152-555-5678'])# 所有键值对print(contacts.items()) # Output: dict_items([('Bob', '152-555-5678')])模块
继承很多功能的函数集合 称作模块
# 自定义模块,导入module.py中的函数import mathprint(math.sqrt(16))# 直接调用,不加模块名from math import *print(sqrt(16))print(math.sqrt(16)) # math 本身没有被导入!NameError: name 'math' is not defined
# 导入内置模块import randomnum = random.randint(1, 100)print(num)random_list = [11,22,33,44]data = random.choice(random_list)print(data)
# from 模块名 import sqrtfrom math import sqrtprint(sqrt(16))
# import 模块名 as 别名import math as mprint(m.sqrt(16))类 & 方法
- 基本语法
class Dog:passmy_dog = Dog() # 创建实例(对象)print(type(my_dog)) # <class '__main__.Dog'>
- 初始化方法__init__和实例属性
双下划线:私有属性class Dog:def __init__(self, name, age):self.name = name # 实例属性self.age = agemy_dog = Dog("旺财", 3) - 魔术方法
class Cat:def __init__(self, name):self.name = name# 魔术方法:控制对象打印结果def __str__(self):return f"猫咪:{self.name}"tom = Cat("汤姆")print(tom) # 自动执行 __str__,输出:猫咪:汤姆class Book:def __len__(self):return 200 # 自定义页数b = Book()print(len(b)) # 自动调用 __len__,输出 200
- 实例方法
class Dog:def __init__(self, name, age):self.name = nameself.age = agedef get_human_age(self):return self.age * 7my_dog = Dog("旺财", 3)human_age = my_dog.get_human_age() # 21
- 类属性 vs 实例属性
class Dog:species = "Canis familiaris" # 类属性def __init__(self, name):self.name = name # 实例属性dog1 = Dog("旺财")dog2 = Dog("来福")print(dog1.species) # Canis familiarisprint(dog2.species) # Canis familiarisprint(Dog.species) # 直接通过类名查询:Canis familiarisDog.species = "狗" # 修改类属性会影响所有实例print(dog1.species) # 狗
- 类方法
第一个参数是cls(类本身)class Dog:total_dogs = 0def __init__(self, name):self.name = nameDog.total_dogs += 1@classmethoddef get_total(cls):return cls.total_dogsprint(Dog.get_total()) # 0d1 = Dog("旺财")d2 = Dog("来福")print(Dog.get_total()) # 2 - 静态方法
和普通函数的区别是:不能访问实例属性或类属性
class MathUtils:@staticmethoddef add(x, y):return x + yprint(MathUtils.add(3, 5)) # 8
继承
- 基础格式
class Animal:……class Dog(Animal):……
super()调用父类方法class Cat(Animal):def speak(self):super().speak() # 先调用父类方法print("喵喵喵") # 再添加子类行为
属性封装&property
Python 没有严格的私有属性,但约定以 _ 开头的属性为“保护”的,不应当直接访问。可以使用@property提供 getter/setter。
class Person: def __init__(self, name): # 私有属性,外部不直接访问 self._name = name
# 取值方法:对象.name 自动调用 @property def name(self): return self._name
# 赋值方法:对象.name = 值 自动调用 @name.setter def name(self, val): # 简单校验 if len(val) < 2: raise ValueError("名字太短") self._name = val
# 使用p = Person("小明")print(p.name) # 调用@property,取值
p.name = "小红" # 调用setter,赋值print(p.name)