函数的定义
1.函数代码块以 def 关键字开头,后街函数标识符名称和小括号()。
2.任何传入参数和自变量必须放在小括号中间,用来定义参数。
3.函数第一行语句可以选择性的使用字符串——用于存放函数说明。
4.return【表达式】结束函数,选择型地返回一个值个调用方。没有返回值,return相当于返回None。
函数调用
1.定义一个函数只给了函数以个名称,指定了函数里包含的参数,和代码块结构。
2.函数定义完成后,可以通过另一个函数执行调用
def han_name(str):
"定义一个函数"
"输出参数"
print(str)
han_name("???bad boy")
运行结果:
参数传递
类属于对象,变量是没有类型的:
a=[1,2,3]
a="??bad boy"
“1,2,3"属于列表类型,”??bad boy"属于String类型。
a 是没有类型的,只是对象的引用(一个指针)
为参数设置默认值
调用参数时,形参的值没有传入,则为默认值。
def printinfo(name,Age=35):
#打印任何传入的字符
print("Name:",name)
print("Age:",Age)
#调用printinfo函数
printinfo(name="miki")
printinfo(Age=9,name="miki")
运行结果:
关键字参数
概念:关键字参数是指使用形式参数的名字来确定输入的参数值。
1.关键字参数和函数调用关系紧密,函数使用关键字参数来确定传入的参数值
2.使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名配置参数值。
#函数说明:
def printme(str):
"打印传入的字符串"
print(str)
#调用printme函数
printme(str="My string")
运行结果:
def printme(num,str,a):
print(str)
print(num)
print(a)
printme(str="My string",num=16,a=9)
运行结果:
def printinfo(name,age):
"打印任何传入的字符串"
print("name",name)
print("age",age)
#调用printinfo函数
printinfo(age=50,name="miki")
运行结果:
可变参数
1.有时候可能需要一个函数处理比当初声明更多的参数。这些参数叫可变参数,声明时不会命名。
2.基本语法:
def functionname([formal_args]*args,**kwargs):
"函数_文档字符串"
function_suite
return[expression]
3.加了(*)的变量args会存放所有未命名的变量参数,args为元组;
4.而加**的变量kwargs会存放所有未命名的变量参数,即形如key=value的参数,kwargs为字典。
了解形式参数和实际参数
1.定义和调用有参的函数
<1>定义带有参数的函数
def add2num(a,b)#形参
c=a+b
print(c)
<2>调用带有参数的函数
以调用上面的啊大大num(a,b)函数为例:
def add2num(a,b):
c=a+b
print(c)
add2num(11,22) #实参
#调用有参数的函数时,需要在小括号中,传入数据
位值参数
概念:位值参数是必须按照定义时的个数和顺序进行参数传递,也称必备参数。
位置参数
1.形参和实参个数必须保持一致,最好按照位值传参
def getInfo(name,age):
print(name,age)
getInfo('admin',21)
getInfo(age=11,name='admin')
#说明:滴哦用函数时参数的传入顺序
运行结果:
可变参数
#累加运算
def mysum(args):
#*args:可变参数(也可以缩写成*a)
#args的数据类型为:元组(tuple)
print(args)
print(type(args))
sum=0
for item in args:
sum+=item
print(sum)
mysum(1,2,3,4,5,6,7,8,9)
mysum(1,2,3,4,5)
运行结果:
def getStulInfo(name,age,**kwargs):
#**kwargs是一个字典,可以传剃任意多的key_vaule
print(name,age)
print(kwargs)
getStulInfo("admin",19,list=['coding','runing'],str='female')
运行结果: