Day_4_明天务必开始项目
2017-11-14 本文已影响0人
开发猛男
Start from P132
昨天太懒了,我透你吗,打扰我时间的狗贼出门吃饭必涨价!
第8章 函数
使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参。
这让Python依然能够正确地解读位置实参。
8.1.2 实参和形参
- 形参是函数定义时候所需的信息。
- 实参是调用函数时传递给函数的信息。
注意:大家有时候会形参、实参不分,因此如果你看到有人将函数定义中的变量称为实参或将函数调用中的变量称为形参,不要大惊小怪。
8.2 传递实参
8.2.1 位置实参
8.2.2 关键字实参
关键字实参是在调用函数时,传给函数名称—值对。
在调用函数时,忽略顺序,输入形参名+值就可调用。
def describe_pet(animal_type, pet_name):
"""显示宠物的信息"""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(animal_type='hamster', pet_name='harry')
8.2.3 默认值
又名可选参数,调用时有就写,没有就不写。
注意 使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出默认值的实参。这让Python依然能够正确地解读位置实参。
8.4.2 禁止函数修改列表
在调用函数时,传入列表的副本,这样函数不会修改原列表。
例 function_name(list_name[:])
虽然不知道有啥用。真的很鸡肋。
因为教材针对此所给的例子、习题,我完全可以在不用副本的情况下避免修改原列表。
8.5 传递任意数量的实参
- 形参名称前加一个星号
- Python将实参封装到一个元组中
def make_pizza (*toppings): #形参前加一个星号
"""打印顾客点的所有配料"""
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
('pepperoni',)
('mushrooms', 'green peppers', 'extra cheese')
8.5.2 使用任意数量的关键字实参
- 形参名前加两个星号
- 形参让Python创建一个的空字典
- 调用时,格式:
function_name(key='value')
,key
不用引号。
def build_profile(first, last, **user_info): #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'}
8.6.3 使用 as 给函数指定别名
import pizza as p
将pizza模块简写成p
8.6.5 导入模块中的所有函数
- 使用星号导入模块中所有函数‘’
from pizza import *
8.8 小结
给形参指定默认值时,等号两边不要有空格:
def function_name(parameter_0, parameter_1='default value')
对于函数调用中的关键字实参,也应遵循这种约定:
function_name(value_0, parameter_1='value')
- 位置实参、关键字实参、任意数量的实参
- 列表切片副本
-
传入关键字实参的格式
function_name(key='value')
第9章 类
9.1.1 创建 Dog 类
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!")
- 方法
__init__(self,name,age)
End in P159