- 函数
定义函数 使用def
def abc():
print("定义函数")
abc()
形参函数定义中的变量,相当于理解上定义变量 实参函数调用中的变量 相当于实际输入的值
下例为位置实参的应用
def abc(a,b):
print("我输出的是姓名 "+a+" 他的性别是 "+b)
abc("张三","男")
abc("女","李四")
输出
我输出的是姓名 张三 他的性别是 男
我输出的是姓名 女 他的性别是 李四 #函数调用时其顺序很重要
以上可在调用函数时加入关键字使调用正确
def abc(a,b):
print("我输出的是姓名 "+a+" 他的性别是 "+b)
abc("张三","男")
abc(b="女",a="李四")
输出
我输出的是姓名 张三 他的性别是 男
我输出的是姓名 李四 他的性别是 女
可给形参指定默认值
def abc(a,b="男"):
print("我输出的是姓名 "+a+" 他的性别是 "+b)
abc("王五")
abc("赵二","女") #有传值时使用的是传值
输出
我输出的是姓名 王五 他的性别是 男
我输出的是姓名 赵二 他的性别是 女
- 函数返回值
返回简单的值及使用if循环:
def abc(a,b,c=''):#定义c为空值
if c:
name="姓名是 "+a+" "+b+" "+c
else: #判断当没有c值时name的组成
name="姓名是 "+a+" "+b
return name.title() #返回name首字母大写
name = abc("James","Le","Bron")
print(name)
name = abc("Jobs","Steve")
print(name)
输出
姓名是 James Le Bron
姓名是 Jobs Steve
返回字典:
def abc(a,b,c):
info = {'name':a,'sex':b,'age':c}
return info
name_info=abc("王五","男","19")
print(name_info)
输出
{'name': '王五', 'sex': '男', 'age': '19'}
结合使用函数与while循环:
def get_formatted_name(first_name, last_name):#把名和姓结合的函数
full_name = first_name + ' ' + last_name
return full_name.title()
while True:# 这是一个无限循环!
print("\nPlease tell me your name:")
f_name = input("First name: ")
l_name = input("Last name: ")
formatted_name = get_formatted_name(f_name, l_name)
print("\nHello, " + formatted_name + "!")
输出
Please tell me your name:
First name: jobs
Last name: steve
Hello, Jobs Steve!
- 传递列表
def abc(a):
print ("你好! "+a)
name_info=("王五","李四","张三")
for name in name_info:
abc(name)
输出
你好! 王五
你好! 李四
你好! 张三
使用函数时修改列表
不使用函数代码如下:
a=["张三","李四","王五","赵二"]
d_a=[]
while a:
d_name =a.pop()
print(d_name+"签到成功!")
d_a.append(d_name)
for d_name in d_a:
print(d_name)
赵二签到成功!
王五签到成功!
李四签到成功!
张三签到成功!
赵二
王五
李四
张三
使用函数代码如下:
def qd(a,d_a):
while a:
d_name = a.pop()
print(d_name+"签到成功!")
d_a.append(d_name)
def dy(d_name):
for d_name in d_a:
print(d_name)
a=["张三","李四","王五","赵二"]
d_a=[]
qd(a,d_a)#qd(a[:],d_a),切片表示法[:] 创建列表的副本,可以不改变原来a表的数据
dy(d_a)
输出
赵二签到成功!
王五签到成功!
李四签到成功!
张三签到成功!
赵二
王五
李四
张三
- 传递任意数量的实参
def foods(*food):#形参名*food 中的星号让Python创建一个名为food 的空元组,并将收到的所有值都封装到这个元组中。
print("您点的菜为: ")
for fd in food:
print("- "+fd)
foods("小炒黄牛肉","佛跳墙","清蒸福建人")
输出
您点的菜为:
- 小炒黄牛肉
- 佛跳墙
- 清蒸福建人
结合使用位置形参与任意数量形参
def foods(Flavor,*food):
print("您的口味是: "+Flavor+";"+"\n您点的菜为: ")
for fd in food:
print("- "+fd)
foods("重辣","小炒黄牛肉","佛跳墙","清蒸福建人")
输出
您的口味是: 重辣;
您点的菜为:
- 小炒黄牛肉
- 佛跳墙
- 清蒸福建人
结合使用关键字形参与任意数量形参
def pr_user(name,age,**info):#**info 中的两个星号让Python创建一个名为info 的空字典
user={}
user['user_name']=name
user['user_age']=age
for key,value in info.items():#注意此处遍历的是info,定义函数时使用的空字典
user[key]=value
return user
user_info=pr_user("王五","15",sex='男',Occupation='学生')
print(user_info)
输出
{'user_name': '王五', 'user_age': '15', 'sex': '男', 'Occupation': '学生'}
- 存储函数在模块中
我们定义的函数pr_user在hhh(文件名)模块中,调用时直接import,并且在函数前加上调用模块;
import hhh as h #给模块取别名
user_info=h.pr_user("王五","15",sex='男',Occupation='学生')
print(user_info)
输出
{'user_name': '王五', 'user_age': '15', 'sex': '男', 'Occupation': '学生'}
也可以导入任意的函数,并用 as给他指定别名;from hhh import ,加为导入所有函数
from module_name import function_0 as f0, function_1 as f1, function_2 as f2