Python Learning, Day3

1. 函数基本语法及特性

封装成函数的好处:

  • 减少重复代码
  • 可扩展(具有一致性) 
  • 易维护
#函数定义
def func1():
    """testing"""    #文档介绍
    print("in the func1")  #操作
    return 0  #返回值

 

 


 

2. 函数参数与局部变量

2.1 位置参数、默认参数、关键参数

默认参数的应用:

  • 软件一键安装(默认勾选)
  • 连接数据库的端口号

函数调用:

  • 位置调用:与形参一一对应
  • 关键字调用:与形参顺序无关(关键参数只能写在位置参数后面)
#位置参数
stu_register("王山炮",22,"CN","python_devops") #一一对应

#默认参数
def stu_register(name,age,course,country="CN"):  

#关键参数(只能放在位置参数之后)
stu_register(age=22,name='alex',course="python",)

 

2.2 非固定参数

非固定参数的应用

  • 以防以后出现另外的参数,给其留个位置
  • 参数个数很多时,用非固定参数

 实参不固定时,如何定义形参:参数组。主要有两种方式:

  • 位置参数类:用*args形成元组
  • 关键字参数类:用**kwargs形成字典

 

#加入非固定参数后,几种参数混合使用
def test3(name, *args, age = 24, **kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)

'''
#**kwargs:接收关键字参数,转换成字典
#*args:接收位置参数,转换成元组,不能接收关键字参数
'''
test3('zhuyijun','man', sex = 'm', hobby = 'piano', age = 18)    #默认参数可赋可不赋值

'''结果如下:
zhuyijun
18
('man',)
{'sex': 'm', 'hobby': 'piano'}
'''

2.3 局部变量

在子程序(函数)内定义的变量称为局部变量。局部变量也称为形参,只有在函数内部有效。可以这么理解,每一个函数,接受到的是传过来的复制品,返回后就销毁了,毕竟不是地址。

 形参理解:

  • 函数内部不能修改:字符串、整数
  • 函数内部可以修改:列表、字典、元组(本来就不能改)、集合、类(以后学)

如果非要在函数内部修改全局变量:在函数内部定义:global 变量名     ----->不过,不要用!

 

 


 

3. 返回值

函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束

  • 返回数=0:返回None
  • 返回数=1:返回objcet
  • 返回数>1:返回tuple     ----->其实类似超市买一大堆,然后大袋子(元组),就一个

为什么要有返回值:我想要函数执行的结果,根据这个结果继续接下来的操作(比如True、False)

 

#返回多个值
def many():
    print('many')
    return 1, 'hello', ['alex', 'wupei'], {'name': 'zhu'}
str = many()
print(str)
'''结果
many
(1, 'hello', ['alex', 'wupei'], {'name': 'zhu'})
'''

 

 


 

4. 递归、高阶

4.1 递归

定义:一个函数在内部调用自身本身

特性:

  • 必须有一个明确结束条件
  • 每深一层,问题规模应有所减少
  • 效率不高(递归调用的次数过多,会导致栈溢出)

递归函数实际应用案例,二分查找

 

#一直除2
def calc(n):
    print(n)
    if int(n/2) > 0:
         return calc(int(n/2))
    print("->", n)
calc(10)

 

4.2 高阶函数

#高阶函数(用得不多)
def add(a, b, f):   #把函数当参数传进去
    return f(a) + f(b)

res = add(3, -6, abs)

print(res)

 

 


 

5. 函数式编程

  • 面向对象:--->类--->class       ---->当前最火
  • 面向过程:--->过程--->def            --->把一段段过程串起来 
  • 函数式编程:--->函数--->def        --->很早就出来了,不过最近几年又开始热了

过程,就是没有返回值的函数而已。在python中,过程也给了返回值None

 

#函数与过程的区别

#函数
def func1():
    """testing"""    #文档介绍
    print("in the func1")
    return 0

#过程
def func2():
    '''testing'''
    print('in the func2')

x = func1() y = func2()

 

  • 数学里的函数:输入确定,输出就确定;  ----->函数式编程
  • 编程:输入确定,输出不一定,比如内部有逻辑运算。python

因此,python不是完全的函数式编程

注:函数式编程和编写函数不一样!函数式编程必须输出完全确定。

 

转载于:https://www.cnblogs.com/zhuyijunn/p/9843999.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值