• python碎片


    一个*传参:

      方式1:如果想传一个列表中的值,实参前加*。如: *[1,2,3]

      方式2:直接传入一个列表,不加*。如[1,2,3],则传入的是一整个列表,包括[]

    两个**传参:

      方式1,:{name = 'zhuo'}

      方式2:**{'name':'zhuo','age':'23'}

    1 def  name(*y,**z):
    2 
    3   print(y,z)
    4 
    5 name(*[1,2,3],**{'name':zhuo'}) #打印(1,2,3 ),{'name':'zhuo'}
    6 
    7 name([1,2,3],{'name':'zhuo'}) #打印([1,2,3],{'name':'zhuo'}) , {}
    8 
    9 name([1,2,3],{name = 'zhuo'}) #打印[1,2,3],{'name':'zhuo'}

    形参

    实参

    位置参数:必须一一对应,不能缺少或增多,位置参数必须要在关键字参数左边

    1 (1)求x的n次方
    2 def power(x,n):  #x,n为位置参数
    3     s=1
    4     while n>0:
    5         n=n-1
    6         s=s*x
    7     return s
    8 

    关键字参数:

     1 5、关键字参数 ** (可以传入0到任意个关键字参数,格式 city='longyan' 2 >>> def person(name,age,**kw):
     3    print('name:',name,'age:',age,'other:',kw)
     4 (1)传入新的dict参数
     5 >>> person('zhuo',22,city='longyan') # city='longyan'为关键字参数
     6 name: zhuo age: 22 other: {'city': 'longyan'}
     7 (2)使用现成的dict
     8 >>> extra={'city:':'Beijing','job':'leader'}
     9 >>> person('zhuo',22,city=extra['city:'],job=extra['job'])
    10 name: zhuo age: 22 other: {'city': 'Beijing', 'job': 'leader'}
    11 (3)使用现成的dict+ ** extra(**表示默认传入dict extra中的所有元素)
    12 >>> person('zhuo',22,**extra)
    13 name: zhuo age: 22 other: {'city:': 'Beijing', 'job': 'leader'}
    14   ● 在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到
     1 6、命名关键字参数 , * 2 (1)检查person函数内是否有city和job参数
     3 def person(name,age,**kw):
     4 if ‘city’ in kw:
     5 #有city函数
     6     pass
     7 if ‘job’ in kw:
     8 #有job函数
     9     pass
    10 print(name,age,kw)
    11 
    12 (2)限制关键字名字,分隔符  ,*13 命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错
    14 def person(name, age, *, city, job):
    15 print(name, age, city, job)
    16 >>> person('Jack', 24, city='Beijing', job='Engineer')
    17 Jack 24 Beijing Engineer

    默认参数:调用函数时可以不传参数,使用定义时的默认参数

     1 默认参数(默认参数必须指向不变对象)
     2 #默认参数使用注意事项:
     3 #1.必选参数在前,默认参数在后
     4 #2.有多个参数时,把变化大的参数放前面,变化小的参数放后面。后变化小的的可以作为默认参数
     5 def power(x, n=2):
     6 s = 1
     7 while n > 0:
     8 n = n - 1
     9 s = s * x
    10 return s
    11 #可按自动顺序改变默认参数值,也可指定改变默认参数的值(如city本来是第四个参数,‘shenzheng’)
    12 >>> enroll('zhu=o',5,city='longyan')
    13 name: zhu=o
    14 gender: 5
    15 age: 6
    16 city longyan
    17 
    18 #3.默认参数的坑(所以参数要定义为不变参数)
    19 >>> add_end()
    20 ['END']
    21 >>> add_end()
    22 ['END', 'END']
    23 >>> add_end()
    24 ['END', 'END', 'END'

    参数组(非固定参数):

    1 def  func(x,*args):
    2     print(args)
    3 func(1,['x','y','z'])
    4 #(['x', 'y', 'z'],) 实参前不加*,默认传入的是一个元组,且该列表是元组中的第一个数据
    5 func(1,*['x','y','z'])
    6 #('x', 'y', 'z')实参前加*,表示传入的是一个整体列表
     1 可变参数 *
     2 #计算a2 + b2 + c2 + ……
     3 def calc(number):
     4    sum=0
     5    for i in number:
     6       sum=i*i+sum
     7    return sum
     8 (1)传入新的列表参数
     9 >>> print(calc([1,2,3]))
    10 14
    11 (2)使用现成的列表(角标)
    12 >>> nums=[1,2,3]
    13 >>> print(calc([nums[0],nums[1]]))
    14 5
    15 (3)使用 *nums  把nums列表的所有元素作为可变参数传入
    16 >>> print(calc([*nums]))
    17 14



  • 相关阅读:
    Seminar Schedule
    数学建模之Python操作csv文件
    Pandas之csv文件对列行的相关操作
    Python之文件读写(csv文件,CSV库,Pandas库)
    PATA1028 List Sorting
    19.8.9(全局变量和局部变量的作用域)
    PATA1012The Best Rank(25分)
    DEV-gridview导出Excel
    WPF文本换行
    下拉框--可多选
  • 原文地址:https://www.cnblogs.com/zhuomou/p/8449940.html
Copyright © 2020-2023  润新知