zoukankan      html  css  js  c++  java
  • Python——函数入门(二)

    一、函数的参数

    我们在定义函数时,可以定义形式参数(简称形参),这些形参的值在函数调用的时候才会确定,形参的值由调用者负责传入。

    1、关键字参数

    在Python中,函数的参数名并不是没有意义的,在调用函数的时候,Python允许根据参数名传入参数值,根据参数名传入参数值不需要遵守定义形参的顺序,这种根据参数名传入参数值的方式被称为关键字参数。

    例:

    def test(a,b,c):
    	print ('a:%s,b:%s,c:%s'%(a,b,c))
    	return a,b,c
    
    test(c = 1,a = 2,b =3)
    # 运行结果:
    # a:2,b:3,c:1
    # (2, 3, 1)
    
    test(1,2,3)
    # 运行结果:
    # a:1,b:2,c:3
    # (1, 2, 3)
    
    # 位置参数与关键字参数混合使用,位置参数必须要在关键字参数前,而关键字参数后面只能是关键字参数,否则将会报错
    test(1,b = 2 ,3)
    # SyntaxError: positional argument follows keyword argument

    2、参数默认值

    我们可以在定义函数时,为一个或多个形参传入默认值,当函数被调用时,就不需要再为该形参传值。

    例:

    # 定义函数时,位置参数必须在关键字参数前面
    def return_number(a = 1,b = 2,c):
    	return a,b,c
    
    # 报错 SyntaxError: non-default argument follows default argument
    
    
    
    def return_number(a,b = 2,c = 3):
    	return a,b,c
    
    return_number(1)
    # 返回 (1, 2, 3)
    

    3、个数可变的参数

    当我们定义一个函数时,形参个数是可变的,这时候我们可在形参前添加一个星号(*),这样多个参数值就会被当成元组传入,Python一个函数最多只能带一个支持“普通”参数收集的参数和一个支持关键字参数收集的参数(形参前添加两个星号)。

    “普通”参数收集参数,例:

    def show_book(name,*books):
    	book_list = list(books) 
    	print ('%s发书啦!发放书列表:%s'%(name,book_list))
    
    show_book('小明','语文','数学','英语')
    # 打印 小明发书啦!发放书列表:['语文', '数学', '英语']
    
    def receive_book(*name,book):
     for i in name:
      print ('%s领取了%s!'%(i,book))
    
    receive_book('小明','小红','小蓝',book = '英语')
    # 打印 
    # 小明领取了英语!
    # 小红领取了英语!
    # 小蓝领取了英语!
    

      

     关键字参数收集参数,会被收集成字典传入,例:

    def receive_book(issue,**receive):
    	for name,book in receive.items():
    		print ('%s发放书籍,%s领取了%s书'%(issue,name,book))
    
    receive_book('老王',小明 = '语文',小红 = '英语',小黑 = '数学')
    # 打印
    # 老王发放书籍,小明领取了语文书
    # 老王发放书籍,小红领取了英语书
    # 老王发放书籍,小黑领取了数学书
    

     “普通”参数收集形参和关键字参数收集参数混合使用,例:

    def receive_book(*issue,**receive):
    	for name,book in receive.items():
    		for i in issue:
    			print ('%s发放书籍,%s领取了%s书'%(i,name,book))
    
    receive_book('老王','老吴','老洪',小明 = '语文',小红 = '英语',小黑 = '数学')
    # 打印
    # 老王发放书籍,小明领取了语文书
    # 老吴发放书籍,小明领取了语文书
    # 老洪发放书籍,小明领取了语文书
    # 老王发放书籍,小红领取了英语书
    # 老吴发放书籍,小红领取了英语书
    # 老洪发放书籍,小红领取了英语书
    # 老王发放书籍,小黑领取了数学书
    # 老吴发放书籍,小黑领取了数学书
    # 老洪发放书籍,小黑领取了数学书
    

    4、逆向参数收集

    逆向参数收集,指在程序已有的列表、元组、字典等对象的前提下,把他们的元素‘拆开’后传给函数的参数,逆向收集需要在传入的列表、元组参数之前加一个星号,字典需要在参数之前加两个星号。

    传入列表、元组,例:

    def show(one,*nums):
    	print ('one = %s'%one)
    	print ('nums = ',nums)
    
    # 传入列表
    num = [2,3,4]
    # 使用逆向参数收集
    show(1,*num)
    # 打印
    # one = 1
    # nums =  (2, 3, 4)
    
    show(1,num)
    # 打印
    # one = 1
    # nums =  ([2, 3, 4],)
    
    
    # 传入元组
    n = (2,3,4)
    # 使用逆向参数收集
    show(1,*n)
    # 打印
    # one = 1
    # nums =  (2, 3, 4)
    
    show(1,n)
    # 打印
    # one = 1
    # nums =  ((2, 3, 4),)
    

      

     传入字典,例:

    def receive_book(issue,name,book):
    	print ('%s发放书籍,%s领取了%s书'%(issue,name,book))
    
    my_dict = dict(issue = '老王',name = '小熊',book = '英文')
    receive_book(**my_dict)
    # 打印
    # 老王发放书籍,小熊领取了英文书
    

    同时传入字典、列表,例:

    def receive_book(*issue,name,book):
    	for i in issue:
    		print ('%s发放书籍,%s领取了%s书'%(i,name,book))
    
    my_dict = dict(name = '小熊',book = '英文')
    issue_list = ['老王','老吴']
    receive_book(*issue_list,**my_dict)
    # 打印
    # 老王发放书籍,小熊领取了英文书
    # 老吴发放书籍,小熊领取了英文书
    
  • 相关阅读:
    骑士飞行棋 C#代码详解
    C#中的static静态变量的用法
    Break和Continue的一些注意事项
    枚举类型
    html 01-认识Web和Web标准
    css 17-CSS3的常见边框汇总
    css 16-浏览器的兼容性问题
    css 15-Sass入门
    css 14-CSS3属性详解:Web字体
    css 13-CSS3属性:Flex布局图文详解
  • 原文地址:https://www.cnblogs.com/mingmingming/p/11073621.html
Copyright © 2011-2022 走看看