Python学习之函数初识
一、函数初识
一、定义和使用
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数式编程最重要的是增强代码的重用性和可读性,避免重复代码
def 函数名(参数):
...
函数体
...
返回值
函数的定义主要有如下要点:
定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。 def 是固定的,不能变,他就是定义函数的关键字。 空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。 函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能 括号:是必须加的,先别问为啥要有括号,总之加上括号就对了! 注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。 调用:就是 函数名() 要记得加上括号。
二、函数的调用
#函数定义 def mylen(): """计算s1的长度""" s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) #函数调用 mylen()
三、函数的返回值
不写return的情况下,会默认返回一个None
没有return只写return,后面不写其他内容,也会返回None,有的同学会奇怪,既然没有要返回的值,完全可以不写return,为什么还要写个return呢?这里我们要说一下return的其他用法,就是一旦遇到return,结束整个函数。
只写returnreturn None:和上面情况一样,我们一般不这么写。
返回一个值
刚刚我们已经写过一个返回一个值的情况,只需在return后面写上要返回的内容即可。
return返回一个值返回多个值
可以返回任意多个、任意数据类型的值
return返回多个值返回的多个值会被组织成元组被返回,也可以用多个值来接收
多个值接收
四、函数的参数
我们告诉mylen函数要计算的字符串是谁,这个过程就叫做 传递参数,简称传参,我们调用函数时传递的这个“hello world”和定义函数时的s1就是参数。
实参与形参
参数还有分别:
我们调用函数时传递的这个“hello world”被称为实际参数,因为这个是实际的要交给函数的内容,简称实参。
定义函数时的s1,只是一个变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参。
传递多个参数
参数可以传递多个,多个参数之间用逗号分割。
传递多个参数位置参数
站在实参角度
1.按照位置传值------必须一一对应
按照位置传参2.按照关键字传值
PS : 三元运算
z = x if x > y else y (适用于if,else 语句)
按照关键字传参3.位置、关键字形式混着用-----有顺序,位置参数在前,关键字参数在后
混合传参
站在形参角度
位置参数必须传值
View Code默认参数
1.正常使用
使用方法
为什么要有默认参数:将变化比较小的值设置成默认参数
2.默认参数的定义
默认参数参数陷阱:默认参数是一个可变数据类型
默认参数是个可变类型
动态参数
一、*args 动态参数,不定长参数
args元组,他包含了你所有的位置参数.
def func(*args):
print(args,type(args))
func(1,2,'alex',3,4,5,6,8,4,7,2)
#(1, 2, 'alex', 3, 4, 5, 6, 8, 4, 7, 2) <class 'tuple'>
def func(a,b,c,*args,):
print(a)
print(b)
print(c)
print(args,type(args))
func(1,2,'alex',3,4,)
#1
2
alex
(3, 4) <class 'tuple'>
def func(a,b,c,*args,sex = '男'):
print(a)
print(b)
print(c)
print(sex)
print(args,type(args))
func(1,2,'alex','wusir','ritian ',sex='女')
# 1
2
alex
女
('wusir', 'ritian ') <class 'tuple'>
**kwargs 他包含了关键动态参数
kwargs输出的是字典格式
def func(**kwargs):
print(kwargs)
func(a = 1,b = 4,c = 3,d = 2)
#{'a': 1, 'b': 4, 'c': 3, 'd': 2}
形参顺序
位置参数,*args,默认参数,**kwargs
def func(a,b,c,*args,sex = '男',**kwargs):
print(a)
print(b)
print(c)
print(sex)
print(args,type(args))
print(kwargs)
func(1,2,'alex','wusir','ritian ',sex = '女',name = 'taibai',age = 21)
万能参数
def func2(*args,**kwargs):
#万能参数
print(args)
print(kwargs)
func2(1,2,3,5,name='alex',age=56)
#(1, 2, 3, 5)
{'name': 'alex', 'age': 56}
*魔法运算: 打散
def func2(*args,**kwargs):
print(args)
#(1,2,3)
l1 = [1,2,3,]
l2 = [1,2,3,2,3,100,2]
func2(*l2,*l1)
#(1, 2, 3, 2, 3, 100, 2, 1, 2, 3)
def func3(*args,**kwargs):
print(args)
print(kwargs)
dic = {'name':'alex','age':12}
dic2 = {'name':'jin','age':22}
func3(**{'name1':'alex','age1':12},**{'name2':'jin','age2':22},name3 = 'wusir')
#()
{'name1': 'alex', 'age1': 12, 'name2': 'jin', 'age2': 22, 'name3': 'wusir'}

浙公网安备 33010602011771号