五.Python函数基础(下)

1.函数的基本类型

  • 1.无参数,无返回值
    多用于提示信息打印
    例:
def a():
    print("20")
a()
  • 2.无参数,有返回值
    多用在数据采集,比如获取系统信息
    例:
def a():
    a=20
    return a
print(a())
  • 3.有参数,无返回值
    多用于设置某些不需要返回值的参数设置
    例:
def a(b):
    c=[]
    c.append(b)
    print(c)
a(1)
  • 4.有参数,有返回值
    一般是计算型的,需要参数,也要返回结果
    例:
def a(b):
    c=0
    c+=b
    return c
print(a(2))

2.变量

一.局部变量

是指在一个函数体内中拥有的变量,出了函数体便无法再使用(作用域局限在函数内部)
因此局部变量在不同的函数中可以同名,也可以有不同的值,不会有任何影响.
例:

def a():
    Test="test"
    pass
print(Test)
# 结果为报错 NameError: name 'Test' is not defined ,因为Test是一个局部变量,只能在函数a中使用

二.全局变量

是指在整个程序下,每个函数皆可调用的变量,既可以在函数外部使用,也可以在函数内部使用(作用域在全局)
例:

Name="xiaoli"
def a():
    print(Name)
    pass
a()
# 结果为打印xiaoli,可以看到,在函数内部可以调用全局变量Name.

注意,如果局部变量和全局变量产生冲突,在函数体内优先使用局部变量
例:

Name="xiaoli"
def a():
    Name="xiaonan"
    print(Name)
a()
# 结果为打印xiaonan.因为局部变量在函数体内优先

利用关键字将局部变量修改为全局变量
使用方法:

全局变量=def 函数名(参数):
	global 全局变量
	全局变量=

例:

Name="xiaoli"
def a():
    global Name
    Name="xiaonan"
a()
print(Name)
# 结果为打印xiaonan.因为局部变量修改为全局变量
# 注意:用关键字修改局部变量为全局变量,必须先调用函数,否则不会生效

3.引用

案例1:

a=1
def func(x):
    print("x的id为:{}".format(id(x)))
    pass
func(a)
print("a的id为:{}".format(id(a)))

发现结尾为两者内存地址一致
案例2:

a=1
def func(x):
    print("x的id为:{}".format(id(x)))
    x=2
    print("x修改后的id为{}".format(id(x)))
    pass
func(a)
# 结果为分行打印x的id为:3127229770032和x修改后的id为3127229770064
# 发现两者内存地址不一致

图例:
在这里插入图片描述
更改值后:
在这里插入图片描述
因此引入观点
在python中,值是靠引用来传递来的,可以用id()查看一个对象的引用是否相同,id是值保存在内存中那块内存地址的标识.(此句为摘抄)

4.函数

一.匿名函数

Python中使用lambda创建匿名函数,
匿名函数,即没有名字,也没有def关键字创建的函数
使用方法:

lambda 参数1,参数2 : ...(代码) -需为表达式

例:

c=lambda a,b:a+b
print(c(1,2))
# 结果为打印3.返回值为3
# 相当于普通函数
def c(a,b):
	return a+b
print(c(1,2))
参数并不局限两个,还有参数3,参数4...
但要注意,参数之间需用 "," 隔开,参数和代码(表达式)需用 ":"隔开
且代码(表达式)有且只有一个

直接调用的方法:

a=(lambda x,y:x+y)(1,2)
print(a)
# 结果为打印3.注意:两边括号不能少

灵活运用(三元运算)
使用方法:

lambda 参数1,参数2:...(代码) if ...(条件)>...(条件) else ...(条件)

例:

a=lambda x,y:x+1 if x>y else x-1
print(a(2,4))
# 结果为打印1,因为不满足x>y的条件,所以执行x-1.返回值为1

缺点:
lambda只能是单个表达式,不是一个代码块,lambda的设计就是为了满足简单函数的场景.
只能封装有限的逻辑,复杂逻辑无法实现,必须使用def来处理

二.递归函数

递归函数:
指在函数内部再次调用自身
递归函数必须有一个结束条件,否则递归无法结束会一直递归下去,直到最大递归深度报错
例: -求阶乘5!

def a(b):
	c=1
	for d in range(1,b+1):
		c*=d
	return c
print(a(5))
# 结果为打印120

灵活运用: -遍历文件,列出文件夹下的所有文件

import os
def FindFile(FolderName):
    ListFile=os.listdir(FolderName)
    for FileName in ListFile:
        fileName=os.path.join(FolderName,FileName)
        if os.path.isdir(fileName):
            FindFile(fileName)
        else:
            print(FileName)
FindFile("路径")
# 填入路径即可列出所有文件.
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值