python语句x 3 3执行_python3.x 基础三:函数

本文介绍了Python3.x中的函数概念,包括面向过程、面向对象和函数式编程的对比,函数的定义、调用及参数传递。重点讨论了函数的特性、参数类型、返回值、局部和全局变量,以及非固定参数的使用。还提到了递归函数和匿名函数(高阶函数)的概念。
摘要由CSDN通过智能技术生成

1.OOP 面向对象编程,万物皆对象,以class为主,抽象化

2.POP 面向过程变成,万事皆过程,def定义过程

3.函数式编程,将某种功能封装起来,用的时候直接调用函数名,def定义函数,也叫function/方法/过程/子程序

函数定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名即可 --Alex

特性:

减少重复代码

使程序变得可扩展

使程序变得易维护

语法定义:

def函数名():

函数执行语句

不带参数的函数调用

>>> deffunc_name1():

...print("hello world")

...>>>func_name1()

hello world

带1个参数的函数调用

>>> deffunc_name1(name):

...print("my name is :",name)

...>>> func_name1('alex')

my nameis: alex>>> name = 'oldboy'

>>>func_name1(name)

my nameis: oldboy>>>

带2个参数的函数调用

def定义函数的时候,括号里面的变量叫形参,引用内存空间

调用函数的时候,括号里面的变量叫实参,内存数据

形如(variable1,variable2),叫位置参数

形如(variable1=value1,variable2=value2),叫关键字参数

关键字参数一定要在位置参数后面

没特别指明,形参和实参必须一一对应,多一个少一个都报错

>>> deffunc_name2(a,b):

... c=a*b

...print(c)

...>>> func_name2(2,3)6

>>> x,y=5,5

>>>func_name2(x,y)25

>>> func_name2(a=2,b=3)6

>>> func_name2(a=2,5)

File"", line 1SyntaxError: positional argument follows keyword argument>>> func_name2(2,b=5)10

>>> func_name2(a=2,b=3,c=4)

Traceback (most recent call last):

File "", line 1, in

TypeError: func_name2() got an unexpected keyword argument 'c'

>>> func_name2(a=2)

Traceback (most recent call last):

File "", line 1, in

TypeError: func_name2() missing 1 required positional argument: 'b'

函数返回值,遇到return语句将结束函数

>>> defwith_return(a,b):

...return(a *b)

...return(a +b)

...>>> defwithout_return(a,b):

...print(a*b)

...print(a+b)

...>>> with_return(2,3)6

>>> without_return(2,3)6

5

>>> x=with_return(2,3)>>> print(x)6

>>> y= without_return(2,3)6

5

>>> print(y)

None>>>

全局变量与局部变量

函数体外定义的变量称为全局变量,在函数体内也生效,前提是先定义全局变量,后定义函数

函数体内定义的变量称为局部变量,只在当前函数体内生效

name,age = 'alex',18

print(name,age)deffunc_name0():

name= 'oldboy'age= 100

print(name,age)print(age+1)

func_name0()print(name,age)

alex18oldboy100

101alex18

非固定参数,当传入的参数不确定个数的时候

非固定参数*args,传入的参数变成元组,元组可为空

非固定参数**kwargs,传入的参数变成字典,

*args与**kwargs可同时使用

>>> def func_name5(name,age,*args):

...print(name,age,args)

...>>> func_name5('alex',18)

alex18()>>> func_name5('alex',18,'oldboy')

alex18 ('oldboy',)>>> func_name5('alex',18,'oldboy',100)

alex18 ('oldboy', 100)>>> func_name5('alex',18,'oldboy',100,[1,2])

alex18 ('oldboy', 100, [1, 2])>>> func_name5('alex',18,'oldboy',100,[1,2],{'key1':'v1','k2':'v2'})

alex18 ('oldboy', 100, [1, 2], {'key1': 'v1', 'k2': 'v2'})

>>> def func_name6(name,age,**kwargs):

...print(name,age,kwargs)

...>>> func_name6('alex',18)

alex18{}>>> func_name6('alex',18,'oldboy')

Traceback (most recent call last):

File"", line 1, in TypeError: func_name6() takes2 positional arguments but 3were given>>> func_name6('alex',18,oldboy=100)

alex18 {'oldboy': 100}>>> func_name6('alex',18,oldboy=100,salary=1,address='beijing')

alex18 {'address': 'beijing', 'salary': 1, 'oldboy': 100}

>>> def func_name7(name,age,*args,**kwargs):

...print(name,age,args,kwargs)

...>>> func_name7('yzw',28,18,'man',address='guanghzou',mail='xxx@com.cn')

yzw28 (18, 'man') {'address': 'guanghzou', 'mail': 'xxx@com.cn'}>>> func_name7('zvy',18)

zvy18 () {}

嵌套函数,函数中调用函数,但是只能调用同级的函数,不能隔级调用

递归函数

必须有一个明确的结束条件

每递归一次,问题规模比上一次都应有减少

效率不高,下面这个越到后面效率越低

>>> list1=[0,1]>>> for i in range(2,10):

... list1.append(list1[i-1]+list1[i-2])

...>>>print(list1)

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]>>>def func_fib(x):

...if x == 0:

...return 0... elif x== 1 or x == 2:

...return 1...return func_fib(x-1)+func_fib(x-2)

...>>> func_fib(10)55

匿名函数--link:

高阶函数,变量指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

>>> deffunc_high(a,b,f):

...returnf(a),f(b)

...>>> num1=10

>>> str1='hello'

>>>func_high(num1,str1,id)

(10911456, 140199339463320)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值