python基础 6 函数(二)

1函数的参数

在Python中函数参数的定义方式有以下4种方式

   1位置参数

   2关键字参数

   3默认参数

   4可变参数

2位置参数

实参和形参一一对应,按位置来传递参数

第一实参给第一形参赋值,第二个实参给第二个形参赋值,像这种按位置传递的的方式就是位置参数

def sum_num(num1,num2):
     print(num1+num2)                 
sum_num(1,2)     """3"""

3关键字参数

我们在传参的时候,以形参等于实参的形式忽略定义的顺序进行传参的传参方式

def sum_num(num1, num2):
    print(num1)
    print(num2)
    print(num1 + num2)
sum_num(num1=10, num2=20)
sum_num(num2=20, num1=10)
参数值不受位置影响   
10
20
30
10
20
30

如果想要和位置参数混合使用   则须注意  位置参数在前,关键字参数在后  如:

def sum_num(num1, num2):
    print(num1)
    print(num2)
    print(num1 + num2)
sum_num(10, num2=20)           #位置参数在前,关键字参数在后   正常运行
sum_num(20, num1=10)           #sum_num()为参数“num1”获取多个值    报错
sum_num(num1=10,20)            #位置参数在后,关键字参数在前    报错#

4默认参数

我们在定义参数的时候,我们给形参一个默认值,在我们调用函数的时候,如果不给有默认值的形参传参,会自动采用默认值

当某个值变化的时候,我们就可以使用默认参数。

def save_userinfo(name,age,gender = '男'):
    print('姓名:{},年龄:{},性别:{}'.format(name,age,gender))
save_userinfo('王斌',20)
save_userinfo('lcl',10,'女')

结果:
姓名:王斌,年龄:20,性别:男
姓名:lcl,年龄:10,性别:女

注意  默认的参数一定要写到形参的后面

5可变参数

如果函数中的参数过多,我们定义起来非常的麻烦,调用起来也非常的麻烦,因此python给我们提供了可变参数类型。能处理比当初声明时更多的参数,会将传入的参数变成元组(*args)或者字典(**kwargs)

     1,元组参数  *args

注意 :1  多个位置会被组织成为一个元组类型

            2  一般情况下,变量名为args     *args

def func(*aa):
    print(aa)      #可以传递任意多个形参
    print(aa[0],aa[1])
func(1,2,3,4,5,)        #多个位置会被组织成一个元组


def func(*args):
    print(args)      #可以传递任意多个形参
    print(args[0],args[1])
func(1,2,3,4,5,)     #多个位置会被组织成一个元组

        两者的代码完全一致,但是一般情况下选择使用第二种命名方式

*号的打散功能

tup = (1,23,4)
print(tup)       (1, 23, 4)
print(*tup)      1 23 4

lst = ['a','b','c']
print(*lst)        a b c
 
s = 'hello'
print(*s)       h e l l o

调用函数时的用法    例子

def func(a,b,c):
    print(a,b,c,)
    print(type(a))
tup = (1,2,3)
func(tup[0],tup[1],tup[2])

结果:
1 2 3
<class 'int'>

2字典参数**kwargs

通过给形参前面添加**是参数变成一个字典,多有传递的参数都变成字典的键值对,这里传参要求键等于值得形式

**kwargs  结果类型是字典,传递的值是以key = value方式传入

def func(**kwargs):
    print(kwargs)
    print(kwargs['name'],kwargs['age'],kwargs['gender'])
func(name='zs',age=10,gender='男')

结果:
{'age': 10, 'gender': '男', 'name': 'zs'}
zs 10 男

注意  关键字被组织成一个字典类型的数据  

  **   具有将字典打散的功能

def func(name,age):
    print(name,age)
dic = {'name':'zs','age':10}
func(**dic)       #  zs 10
func(name='zs',age='10')  #  zs 10

注意事项:**kwargs必须放在*args后面。

def func(a, *args, b=10, **kwargs):
    print(a)
    print(args)
    print(b)
    print(kwargs)
func('zs','ww',b = 23 ,c = 30 ,d = 49)

6 函数的嵌套

def func1():
    print('1')
def func2():
    func1()
    print('2')
def func3():
    func2()
    print('3')
func3()

1
2
3

猜你喜欢

转载自blog.csdn.net/weixin_44303465/article/details/85713750