python学习笔记之函数
来源:互联网 发布:手机淘宝哪里实名认证 编辑:程序博客网 时间:2024/05/16 06:38
python学习笔记之函数
资料:廖雪峰官方网站-函数的参数
- 定义函数
def f_abs(x): if not isinstance(x,(int,float)): raise TypeError("bad operand type") if x<0: return -x elif x>0: return x else: return x
- 空函数
使用pass,创建空函数,待以后补上。但是不写pass空着会报错。
def f_pass(): pass
- 参数检查
if not isinstance(x,(int,float)): raise TypeError("bad operand type")
- 返回多个值
return nx, ny
- 使用python文件
导入包的方式使用f_abs (位于test.py中)
from test import f_abs
即可使用f_abs
函数参数 廖雪峰官方网站-函数的参数
* 参数类型:位置参数,默认参数,可变参数,关键字参数,命名的关键字*位置参数
就是我们使用的最普通的参数,所有位置参数都要传参。
在传递参数时,我们可以写成赋值的形式:x=9,但是这种传参只能排在右边,并且要确保所有的参数都穿进去(赋值传参,很容易丢失参数,如测试)>>> def test(x,y,z):... print(x)... print(y)... print(z)... >>> test(9,y=0,z=0)900>>> test(z=3,y=2,x=1) #使用指定参数时,传参位置可以改变,但不能丢失,多次赋值123------------以下是错误用例----------------------->>> test(1,y=2,3) #指定参数应该位于右侧,如同指定默认参数的方式 File "<stdin>", line 1SyntaxError: positional argument follows keyword argument>>> test(1,x=2,z=3) #再次指定x,同时也丢失了一个位置参数Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: test() got multiple values for argument 'x'
- 默认参数
python的默认参数比c++的更灵活:
1、默认参数都需要放在最后边(必选参数必须在前,默认在后)
2、可以仅修改需要的默认参数,而不必把该参数之前的默认参数都填上。
(让一切看起来合理)
def enroll(name,gender,age=6,city="changchun"): print(name) print(gender) print(age) print(city)-------------------------------output:>>> from test import enroll>>> enroll("liu","F")liuF6changchun>>> enroll("liu","F",city="handan") #并没有填写city之前的默认参数ageliuF6handan
- 注意,默认参数指向对象生效的时间是定义时
正是由于默认参数生效是在定义时(可以理解成第一次调用吧!X–这是错误的理解,默认参数指向的默认对象,应该伴随函数生命的从定义开始),而不是每次调用时。
定义函数后,L即指向对象[],这个对象应该是伴随该函数的,随意在多次调用默认函数后,会发现追加多次END。
def add_end(L=[]):L.append('END')return L>>> add_end()['END', 'END']>>> add_end()['END', 'END', 'END']#解决办法,默认指向None,常量。def add_end(L=None):if L is None: L = []L.append('END')return L
- 默认参数
可变参数
函数参数列表,看起来很简洁,但是可以传入多个参数。
对于函数来说,收到的就是个tuple。
形式:*argsdef calc(*numbers):sum = 0for n in numbers: sum = sum + n * nreturn sum>>> calc(1, 2)5>>> calc()0>>> nums = [1, 2, 3] #也可以这样传进去>>> calc(*nums)14
关键字参数
该类型参数是指可以传入任意个带参数名的参数,即可以传入制定参数。
这时传入的是dict,需要内部确定关键字参数的名字。
形式:**kwdef person(name, age, **kw):print('name:', name, 'age:', age, 'other:', kw)>>> 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)则无需)def person(name, age, *, city, job): print(name, age, city, job)>>> person('Jack', 24, city='Beijing', job='Engineer')Jack 24 Beijing Engineer#如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:def person(name, age, *args, city, job): print(name, age, args, city, job)#命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:>>> person('Jack', 24, 'Beijing', 'Engineer')Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: person() takes 2 positional arguments but 4 were given
- 参数组合使用
对于任意函数,都可以通过类似func(*args, **kw)的形式调用它
0 0
- python学习笔记之函数
- Python学习笔记之函数
- python学习笔记之函数
- Python学习笔记之函数
- 【Python学习笔记】-Python之zip()函数
- Python学习笔记之函数生成器
- python学习笔记(二)之函数
- python 学习笔记之内置函数
- Python学习笔记之偏函数
- Python之学习笔记(函数)
- python---学习笔记之open()函数
- python 学习笔记---函数式编程之高阶函数
- python 学习笔记 -- 函数
- Python学习笔记--函数
- Python学习笔记 函数
- Python学习笔记:函数
- python函数学习笔记
- Python学习笔记--函数
- 数组和指针
- 35岁程序员的独家面试经历
- 【ACM】P2011、P2012、P2013(*)、P2014代码演示
- [LeetCode]326. Power of Three
- 设计模式-单例
- python学习笔记之函数
- 动态代理
- 多校联赛 Envy
- Oracle DataBase AQ 学习小结(1)
- 机器视觉的简介
- Java8新的时间和日期
- 使用VIPER构建iOS应用
- TCP/IP
- 用kubeadm 搭建 Kubernetes