8.7 函数编写指南
1、应给函数指定描述性名称,且只在其中使用小写字母和下划线、给模块命名时也应遵循上述约定 2、每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在函数定义后面,并采用文档字符串格式 3、给形参指定默认值时,等号两边不要有空格,当然,调用的时候也应该注意 4、建议代码行的长度不要超过79字符,如果形参很多,导致函数定义的长度超过了79字符, 可在函数定义中输入左括号后按回车键,并在下一行按两次Tab键,从而将形参列表和只缩进一层的函数体区分开来 5、如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开 6、所有的import语句都应放在文件开头,唯一例外的情形是,在文件开头使用了注释来描述整个程序。In [1]:
def greet_user():"""显示简单的问候语"""
print("hello")In [2]: greet_user() hello In [3]: def greet_user(username):
print(f"hello{username}")In [4]:
greet_user("一叶知秋")
hello一叶知秋8.4 传递列表 8.4.1 在函数中修改列表 In [6]: # 传递列表
def greet_user(names):
"""向列表中的每一个用户都发出简单的问候"""
for i in names:
msg = "hello," + i.title() + "!"
print(msg)In [7]: usernames = ["han","joy","davin"] In [8]: greet_user(usernames) hello,Han! hello,Joy! hello,Davin! In [9]:
# 修改列表
def print_models(unprinted_designs, completed_models):
"""模拟打印每一个设计,直到没有未打印的设计为止,打印每个设计后,都将其移动到completed_models"""
while unprinted_designs:
current_model = unprinted_designs.pop()
print("打印模型:"+ current_model)
completed_models.append(current_model)
def show_completed_models(completed_models):
"""显示打印好的所有模型"""
print("这些模型已经打印:")
for model in completed_models:
print(model)In [10]: unprinted_designs = ['iphone case','robot pendant','dodecahedron']
completed_models = []In [11]:
print_models(unprinted_designs,completed_models)
打印模型:dodecahedron 打印模型:robot pendant 打印模型:iphone caseIn [14]:
show_completed_models(completed_models)
print(unprinted_designs)
print(completed_models)
这些模型已经打印: dodecahedron robot pendant iphone case [] ['dodecahedron', 'robot pendant', 'iphone case']In [28]:
# 函数传参 传入的列表会使得原先的列表发生改变 所以传递的是列表地址?
# 如果是一些其他类型的呢?
str_ = "str"
tuple_ = (1,2,1,1,1)
list_ = ['1','2']
dict_ = {1:"一",2:"二"}
set_ = {1,2,3,4}
int_ = 10
float_ = 1.1
def is_changed(variable):
variable += (["哈哈哈"],)
print(variable)In [29]:
is_changed(tuple_)
tuple_
(1, 2, 1, 1, 1, ['哈哈哈'])Out[29]:
(1, 2, 1, 1, 1)In [30]: In [32]:
a ['1', '2'] b cIn [34]:
制作一款10英寸披萨,配料有:('土豆', '芝士', '沙拉酱')In [40]: Out[40]:
{'firstname': '一叶', 'lastname': '知秋', 'loc': '博客园', 'Email': '[email protected]'}In [51]:
# 练习8-9 魔术师
"""
创建一个包含魔术师名字的列表,并将其传递给一个名为
show_magicians()的函数,这个函数打印列表中每个魔术师的名字。
"""
magician_names = ['a','b','h']
def show_magicians(names):
for name in names:
print(name)
show_magicians(magician_names)a
b hIn [50]:
# 8-10 了不起的魔术师
"""在你为完成练习 8-9 而编写的程序中,编写一个名为
make_great()的函数,对魔术师列表进行修改,在每个魔术师的名字中都加
入字样“the Great”。调用函数 show_magicians(),确认魔术师列表确实
变了。
"""
# 已修改
def make_great(names):
for index,name in enumerate(names):
name = "the Great " + name
names[index] = name
magician_names = ['a','b','h']
def show_magicians(names):
make_great(names)
for name in names:
print(name)
show_magicians(magician_names)
the Great a the Great b the Great hIn [60]:
# 8-11 不变的魔术师:
"""
修改你为完成练习 8-10 而编写的程序,在调用函数
make_great()时,向它传递魔术师列表的副本。由于不想修改原始列表,请
返回修改后的列表,并将其存储到另一个列表中。分别使用这两个列表来调
用 show_magicians(),确认一个列表包含的是原来的魔术师名字,而另一个
列表包含的是添加了字样“the Great”的魔术师名字。
"""
# 已修改
magician_origin_names = ['a','b','h']
magician_current_names = []
def make_great(names):
for index,name in enumerate(names):
name = "the Great " + name
names[index] = name
return names
magician_current_names = make_great(magician_origin_names[:])
def show_magicians(names):
for name in names:
print(name)
show_magicians(magician_origin_names)
show_magicians(magician_current_names)
a b h the Great a the Great b the Great hIn [61]:
# 当实参不止一个的时候,可以使用 * 号进行处理
# 例如:
def make_pizza(*toppings):
for i in toppings:
print(i)In [62]:
make_pizza("a",['1','2'],"b","c")
a ['1', '2'] b cIn [63]:
# 位置实参! 和 任意数量实参
# 形参名字*toppings中的*让Python创建了一个名为toppings的空元组,并将所有接受过来的值封装在这个元组里
# 让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后
def make_pizza(size,*toppings):
print(f"制作一款{size}英寸披萨,配料有:{toppings}")
make_pizza(10,"土豆","芝士","沙拉酱")制作一款10英寸披萨,配料有:('土豆', '芝士', '沙拉酱') In [81]:
# 学习完 一个星号*,再学习 两个星号*的使用方法
def build_profile(first,last,**userInfo):
print(userInfo)
profile = {}
profile["firstname"] = first
profile["lastname"] = last
for key,value in userInfo.items():
profile[key] = value
return profile
# build_profile("一叶","知秋",loc = "博客园",Email = "[email protected]")build_profile("一叶","知秋",loc = "博客园",Email = "[email protected]")
build_profile("一叶","知秋",Email = "[email protected]")
{'Email': '[email protected]'}Out[81]:
{'firstname': '一叶', 'lastname': '知秋', 'Email': '[email protected]'}
8.6 将函数存储在模块中
8.6.1 导入整个模块
8.6.2 导入特定的函数
8.6.3 使用 as 给函数指定别名
8.6.4 使用 as 给模块指定别名
8.6.5 导入模块中的所有函数
8.7 函数编写指南
8.8 小结
['Monty', 'Python']标签:name,第八章,列表,names,print,def,函数 From: https://www.cnblogs.com/IT-QiuYe/p/17015673.html