在前面几章,我们用到的一些函数type()、id()、print()等,这些函数到底是怎么定义的呢?
在前面也经常出现方法、关键字的字样,那么函数、方法、关键字三者的区别在哪?
以列表为例,a=[1,2,3]
函数:type(a)、id(a)、help(a.append)、print(a)、sorted(a)
方法:a.append()、a.insert()、a.extend()、a.pop()
32个关键字:if、elif、else、break、continue、while、for、false、true、import、in、is、from、none、return、not、and、or、as、with、class、def、del、pass、except、finally、global、lambda、nonlocal、raise、try、yieldfalse、assert
1、函数基础
1.1、函数的定义
函数是指组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
1.2、函数定义结构
def 函数名(参数1,参数2,...): #函数命名规则:字母数字和下划线组成,和变量命名规则一致
pass #pass在这里表示什么都没有,不执行任何操作
return 表达式 #后面可以返回任意表达式,但不能是赋值语句,若未给返回值,则默认None
函数名(参数1,参数2,...) #函数调用,这里的参数要与定义函数的参数个数一样
def func(): #定义
print('我要上天\n'*10)
func() #调用
1.2.1、pass的用法
def func():
pass # 执行结果为空,这里可以理解为跳过,执行下面的语句
func()
1.2.2、return的用法——返回后面的对象,结束函数调用
a= [1,2,3,4,5,6]
print(a.sort())
执行结果:
原因:当print(a.sort())执行完成后,不知道把结果给谁,所以电脑就会认为这个结果为None
def func():
print('我要上天')
return '怎么办'
func()
执行结果:
上面代码中有同时出现print和return,二者之间的区别在哪呢?
return是函数的返回值,返回值可以赋值给变量;
而print只是打印出来
2、函数参数
在python中参数 无类型,参数可以接受 任意对象,只有函数中代码才会对参数类型有限制
2.1、必备参数
在函数调用的时候,必备参数必须要传入
def func(x,y): #x,y是形参
print(x+y)
func(1,2) #1,2是实参
形参个数必须与实参个数相等,否则会报错!!
def func(x):
print('%s'%x) #让代码更加灵活
func('我要上天!') '''执行结果:我要上天!'''
def func(x,y): #形参
print('开始')
return x+y
a = func(1,2) #实参
print(a) '''执行结果:开始
3'''
2.2、默认参数
在函数调用的时候,默认参数可以不传入值,不传入值时,会使用默认参数
def func(x,y=100): #这里x是必备参数,y则是默认参数,默认参数必须在必备参数的后面
return x+y
a = func(1) #默认参数未给出传入值,则按照默认值来执行,即y=100
b = func(1,10) #默认参数给出了传入值,将不会按照默认值来执行,即y=10
print(a) '''执行结果:101'''
print(b) '''执行结果:11'''
2.3、不定长参数
在函数调用的时候,不定长参数可以不传入,也可以传入任意长度。 其中定义时,元组形式可以放到参数最前面,字典形式只能放到最后面
def func(*args, **kwargs): #args是位置参数,kwargs是关键字参数
print(args)
print(kwargs)
func(1, 2, 3, a=4, b=5, c=6) #调用方式一
func(*(1, 2, 3), **{'a': 4, 'b': 5, 'c': 6}) #调用方式二
'''位置参数'''
def func(*args):
return args
a=func(1,2,'hello',4,5)
print(a) '''执行结果:(1, 2, 'hello', 4, 5)'''
'''关键字参数'''
def func(**kwargs):
print(kwargs)
func(a=4,b=5,c=6) '''执行结果:{'a': 4, 'b': 5, 'c': 6}'''
def func(*args,**kwargs): #*args,**kwargs是位置参数
print(args)
print(kwargs)
func(1,2,3,a=4,b=5,c=6) #调用的方式一
func(*(1,2,3),**{'a':4,'b':5,'c':6}) #调用的方式二
'''执行结果:
(1, 2, 3)
{'a': 4, 'b': 5, 'c': 6}
'''