python规范

  1. 1.函数和模块,使用小写字母和_命名
  2. 2.类,使用驼峰命名法并以大写字母开头
  3. 2.在类定义后面包含一个文档字符串
  4. 4.在类中使用一个空行来分隔方法
  5. 5.在模块中,可使用两个空行来分隔类。
  6. 6.需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import语句,再添加一个空行,然后编
  7. 写导入你自己编写的模块的import语句。

python传递参数

1.位置实参
2.关键字实参
3.默认值
4.不定长参数(参数形如*args,使用一个元组来接收除位置实参外的所有的参数)


调用顺序:
.使用关键字参数时,可以不考虑行参与实参的位置对应
.位置参数与默认值/不定长参数混用时,位置参数在前,默认值/不定长参数在后

不定长参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入

0个或任意个关键字参数,这些关键字参数在函数内部自动组装为一个dict。

形参的定义:

*args是可变参数,args接收的是一个tuple

**kw是关键字参数,kw接收的是一个dict。

实参的传入:

可变参数既可以直接传入:func(1, 2, 3),也可以先组装list或tuple,再通过args传入:func((1, 2, 3));

*参数示例:

# 使用*参数,定义函数calc
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

nums1 = (1, 2, 3)
nums2 = [1, 2, 3]

>>>print(calc(nums1[0], nums1[1], nums1[2]))
14

>>>print(calc(*nums1))
14

>>>print(calc(nums2[0], nums2[1], nums2[2]))
14

>>>print(calc(*nums2))
14

关键字参数既可以直接传入:func(a=1, b=2),也可以先组装dict,再通过kw传入:func({‘a’: 1, ‘b’: 2})。

**参数示例

# 使用**参数,定义函数person

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

>>>person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}

>>>person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

使用args和*kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。