在Python中,定义一个函数要使用def
语句,依次写出函数名、括号、括号中的参数和冒号:
,然后,在缩进块中编写函数体,函数的返回值用return
语句返回。
1.函数:
定义函数时,需要确定函数名和参数个数;函数体内部可以用return
随时返回函数结果;函数执行完毕也没有return
语句时,自动return None
def my_abs(x):
if x >= 0:
return x
my_abs 函数 X参数
****2.参数:Python中函数的参数有4种形式******
1、位置或关键字参数
2、仅位置的参数
3、任意数量的位置参数 *a
4、任意数量的关键字参数 **a
1)
power(x, n)
函数有两个参数:x
和n
,这两个参数都是位置参数,必选参数在前,默认参数在后
当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
默认参数必须指向不变对象!
def calc(*numbers):定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号
*
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
2)关键字参数
kw :在调用该函数时,可以只传入必选参数;和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
3)限制关键字参数的名字,就可以用命名关键字参数,命名关键字参数需要一个特殊分隔符
*
,
*
后面的参数被视为命名关键字参数
def person(name, age, *, city, job):
print(name, age, city, job)
>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer
总结
:
参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。
*args
是可变参数,args接收的是一个tuple;**kw
是关键字参数,kw接收的是一个dict。
属性
实例属性:给实例绑定属性的方法是通过实例变量,或者通过self
变量:类属性:如果Student
类本身需要绑定一个属性呢?可以直接在class中定义属性,这种属性是类属性,归Student
类所有,当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到
>>> class Student(object):
... name = 'Student'
...
>>> s = Student() # 创建实例s
>>> print(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性
Student
>>> print(Student.name) # 打印类的name属性
Student
>>> s.name = 'Michael' # 给实例绑定name属性