一、定义函数
1.函数定义:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。
函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明。
函数内容以冒号起始,并且缩进。
eg:
'''
定义:
def 函数名([参数]):
#函数说明
代码块
'''
def name ():
'''
打印一句话
:return:
'''
print('我是MgVccl!')
2.调用函数
Python内置了很多函数,内置函数可以直接调用。调用一个函数需要知道函数的名称和函数的参数。函数名其实就是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给这个函数起了一个别名。
eg:
def name ():
print('我是MgVccl!')
'''
调用函数:函数名(+参数)
'''
name() #无参数
a=name
a()
二、参数
1.形参和实参
形参可理解为放在定义函数所定义的参数,无实际值;实参就是调用函数时给参数赋值。
eg:
'''
函数的参数:实参和形参
'''
def name (input_name): #input_name,形参,自定义的
print('你好,我是%s!'%input_name)
name('路飞') #传递实参,路飞
2.位置参数
函数定义中允许拥有多个形参,因此函数在调用的时候,也可能包含多个实参。向函数传递参数的方式有很多,通过实参和形参的顺序对应,这就是位置实参。只有位置一致,才能被正确匹配。位置实参是最简单也最常用的关联方式。
eg:
'''
位置实参:函数定义中允许拥有多个形参,因此函数在调用的时候,也可能包含多个实参。
向函数传递参数的方式有很多,通过实参和形参的顺序对应,这就是位置实参。
只有位置一致,才能被正确匹配。位置实参是最简单也最常用的关联方式。
'''
def name (input_name,input_address): #input_name,形参,自定义的
'''
打印一句话
:return:
'''
print('你好,我是%s,来自%s'%(input_name,input_address))
name('路飞','海贼王') #input_name 对应 路飞,input_address 对应 海贼王
3.关键字参数
关键字实参是传递给函数的名称-值对。直接在实参中将名称和值关联起来,因此向函数传递实参时不会混淆。函数调用使用关键字参数来确定传入的值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
eg:
'''
关键字参数: 关键字实参是传递给函数的名称-值对。
直接在实参中将名称和值关联起来,因此向函数传递实参时不会混淆。
函数调用使用关键字参数来确定传入的值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,
因为 Python 解释器能够用参数名匹配参数值.
'''
def name (input_name,input_address):
'''
打印一句话
:return:
'''
print('你好,我是%s,来自%s'%(input_name,input_address))
#使用关键字参数时要么都带上形参,要么都不带。
name('路飞','海贼王')
name('海贼王','路飞')
name(input_name='路飞',input_address='海贼王')
name(input_address='海贼王',input_name='路飞')
name(input_address='路飞',input_name='海贼王')
4.参数默认值
函数定义的时候,设置的参数是形参。那么也可以给每个形参指定一个默认值。当调用函数时,如果没有传入实参,就使用形参的默认值。如果调用的时候传入了实参,那么程序将使用传入的实参。
eg:
'''
参数默认值:
函数定义的时候,设置的参数是形参,那么也可以给每个形参指定一个默认值。
当调用函数时,如果没有传入实参,就使用形参的默认值。如果调用的时候传入了实参,那么程序将使用传入的实参。
'''
def name (input_name,input_address='海贼王'): #若在函数调用时没有给input_address赋值,则默认为海贼王
'''
打印一句话
:return:
'''
print('你好,我是%s,来自%s'%(input_name,input_address))
name('路飞') #没有给input_address赋值,默认为海贼王
name('路飞','龙珠') #给input_address赋的值会 覆盖掉 默认值海贼王
5.多个参数
一个函数可以处理比函数定义时更多的参数。加了星号(*)的变量名会存放所有未命名的变量参数(元组)。 加了(**)的变量名会存放所有命名的变量参数(字典)。
eg:
'''
多个参数;能处理比函数定义时更多的参数,
加了星号(*)的变量名会存放所有未命名的变量参数(元组)。
加了(**)会存放所有命名的变量参数(字典)。
'''
def name (input_name,input_address,*args,**args1): #若在函数调用时没有给input_address赋值,则默认为海贼王
print('你好,我是%s,来自%s'%(input_name,input_address))
print(args)
print(args1)
name('MgVccl','重庆',)
name('MgVccl','重庆','18','火锅','鸡公煲') #加了星号(*)的变量名会存放所有未命名的变量参数。
name('MgVccl','重庆','18','火锅','鸡公煲',a=1,b=2,c=3,d=4,e=5) #加了(**)会存放所有命名的变量参数(字典)。