Python编程:从入门到实践
- 1 用户输入和while 循环 (第七章)
- 2 函数 (第八章)
- 2.1 参数传递
- 2.2 返回值
- 2.3 传递列表
- 2.4 传递任意数量的实参
- 2.4.1 任意数量的实参
- 2.4.2 任意数量的关键字实参
- 2.5 将函数储存在模块中
- 3 类 (第九章)
- 3.1 一个实例
- 3.1.1 访问属性
- 3.1.2 调用方法
- 3.2 使用类和实例
- 3.2.1 默认属性
- 3.2.2 修改属性值
- 3.3 继承
- 3.3.1 子类的方法__init__()
- 3.3.2 重写父类方法
- 3.3.3 将实例用作属性
- 3.4 导入类
- 3.5 Python标准库 (important !)
1 用户输入和while 循环 (第七章)
略
2 函数 (第八章)
2.1 参数传递
若定义函数为函数名(形参1,形参2,形参3=默认值):
则参数传递方法如下表:
名称 | 方法 | 注意事项 |
位置实参 |
| 顺序不可颠倒 |
关键字实参 |
| 顺序可颠倒 |
默认值 |
| 默认值可不写 |
混合使用 | — | 注意代码等效 |
注:使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参
2.2 返回值
简单值,列表,字典等都可 (详略)
2.3 传递列表
可在函数里面改列表/也可以不改(用切片副本) (详略)
2.4 传递任意数量的实参
2.4.1 任意数量的实参
定义函数:函数名(*形参):
注:*形参
代表创立一个空tuple(元组),实参传入元组内
以下是代码:
def make_pizza(*toppings):
"""打印顾客点的所有配料"""
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
以下是运行效果:
(‘pepperoni’,)
(‘mushrooms’, ‘green peppers’, ‘extra cheese’)
2.4.2 任意数量的关键字实参
函数名(**形参)
注:**形参
代表创立一个空dict(字典),实参传入字典内
以下是代码:
def build_profile(first, last, **user_info):
"""创建一个字典,其中包含我们知道的有关用户的一切"""
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key, value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile('albert', 'einstein',
location='princeton',
field='physics')
print(user_profile)
以下是运行效果:
{‘first_name’: ‘albert’, ‘last_name’: ‘einstein’, ‘location’: ‘princeton’, ‘field’: ‘physics’}
2.5 将函数储存在模块中
方法 | 注意事项 |
| 调用函数时需要用 |
| 调用函数直接 |
| 调用函数直接 |
| 调用函数时需要用 |
| 调用函数直接 |
3 类 (第九章)
3.1 一个实例
以下是代码:
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
代码 | 解释 |
| 定义类 |
| 初始化 |
| 定义属性 |
| 定义方法 |
3.1.1 访问属性
.属性
以下是代码:
class Dog():
'''见上文'''
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
以下是运行效果:
My dog’s name is Willie.
My dog is 6 years old.
3.1.2 调用方法
.方法()
以下是代码:
class Dog():
'''见上文'''
my_dog = Dog('willie', 6)
my_dog.sit()
my_dog.roll_over()
以下是运行效果:
Willie is now sitting.
Willie rolled over!
3.2 使用类和实例
3.2.1 默认属性
略
3.2.2 修改属性值
方法1 访问修改
方法2 用方法修改
详略
3.3 继承
3.3.1 子类的方法__init__()
以下是代码:
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
self.odometer_reading += miles
class ElectricCar(Car):
"""电动汽车的独特之处"""
def __init__(self, make, model, year): #只继承了Car
"""初始化父类的属性"""
super().__init__(make, model, year) #必须写成 super().__init__(形参1,形参2) 的形式
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
以下是运行效果:
2016 Tesla Model S
3.3.2 重写父类方法
直接重写
3.3.3 将实例用作属性
略
3.4 导入类
类比导入函数 (详略)
3.5 Python标准库 (important !)
例:OrderedDict()
有序字典
以下是代码:
from collections import OrderedDict
favorite_languages = OrderedDict()
favorite_languages['jen'] = 'python'
favorite_languages['sarah'] = 'c'
favorite_languages['edward'] = 'ruby'
favorite_languages['phil'] = 'python'
for name, language in favorite_languages.items():
print(name.title() + "'s favorite language is " +
language.title() + ".")
以下是运行效果:
Jen’s favorite language is Python.
Sarah’s favorite language is C.
Edward’s favorite language is Ruby.
Phil’s favorite language is Python.