函数
函数定义:
关键字 函数名(形参):
函数体
函数名(实参)
def print_mes(message): #定义函数
print(message)
print_mes("曲阜师范大学") #调用函数
输出:
曲阜师范大学
参数传递三情况:
- 位置实参:根据前后顺序,一个实参对应函数相应位置形参
def print_mes(name, sex): #定义函数
print("%s %s" %(name, sex))
print_mes("小明", "男") #位置实参调用函数
小明对应name,男对应sex
输出:小明 男
- 关键字实参:无需考虑参数位置,函数调用时使用直接给形参赋值
def print_mes(name, sex): #定义函数
print("%s %s" %(name, sex))
print_mes(sex="女", name="小红") #关键字实参调用函数,调用时形参赋值
输出:小红 女
- 默认值形参:定义函数时给形参赋默认值,函数调用时,无此实参,则按默认值;有此实参,则按相应实参
注意: 将默认值形参放在参数最后
def print_mes(name, sex="男"): #定义函数,使用默认值形参
print("%s %s" %(name, sex))
print_mes("小明")
print_mes("小红", "女")
输出:
小明 男
小红 女
函数返回值:
- 实参可选:多次函数调用提供的实参数可能不同,考虑将某些实参默认值设为空字符串,根据不同参数灵活使用
def people(name, sex, language=''): #实参可选定义函数
return ("%s %s %s" %(name, sex, language))
mess1 = people("小华", "男") #不提供language实参
print(mess1)
mess2 = people("小莉", "女", "C++") #提供language实参
print(mess2)
输出:
小华 男
小莉 女 C++
- 可以返回列表、字典等数据结构
参数传递高级应用:
- 传递数字参数时,在函数内修改数字,函数外不起作用
- 传递列表参数时,在函数内修改列表,函数外起作用,可以将列表给予切片复制[ : ]
def ceshi(num): #数字参数
num = 1
list = 0
ceshi(list)
print(list)
输出:0
def ceshi(num): #列表参数
del num [0]
list = [1,2,3]
ceshi(list)
print(list)
输出:[2, 3]
- 传递任意数量的实参:
表示方法 | 作用 |
---|---|
* 形参 | 产生空元组,接收任意多实参 |
** 形参 | 产生空字典,接收任意多键值对 |
def people(name, *language): #接收任意多实参,放入元组language中
print(name)
for lan in language:
print("%s" %lan)
people("小明", "C", "C++", "python")
输出:
小明
C
C++
python
def people(name, **xinxi): #接收任意多键值对,放入字典xinxi中
print(name)
for k,v in xinxi.items():
print("%s: %s" %(k,v))
people("小明", 语言="C++", 国籍="中国") #注意键值对的写法
输出:
小明
语言: C++
国籍: 中国
封装函数:
-
导入整个模块:import 模块名
调用函数:模块名.函数名() -
导入模块中某函数:from 模块名 import 函数名
调用函数:函数名() -
导入函数中所有模块: from 模块名 import 函数名
调用函数:函数名() -
模块/函数别名:as
约定规则:函数名只能是小写字母+下划线;形参默认值等号左右无空格
小应用:
输入姓名,性别,年龄。当输入“q”时程序终止
输出:“姓名,性别,年龄”,年龄可能保密,没有输入
def print_xinxi(name, sex, age=''):
return ("Hello,%s,%s,%s" %(name, sex, age))
while True:
print("\n请告诉我你的信息:")
print("输入q退出程序")
name = input("姓名;")
if name == 'q':
break
sex = input("性别:")
if sex == 'q':
break
age = input("年龄:")
if age == 'q':
break
message = print_xinxi(name, sex, age)
print(message)