python第五天
2021-06-10 03:03
标签:保存数据 语句 传递 操作 获取 listdir 变换 port 模拟实现
全局变量:与局部变量的区别就是作用域的不同; 如果在函数的内部想要修改全局变量,必须用global先进行声明。 在python中,值是靠引用来传递来的,可以用id()查看一个对象的引用是否相同,id是值保存在内存中那块内存地址的标识。 传递的是对象的引用,而不是值 举例: 优点: 缺点: python第五天 标签:保存数据 语句 传递 操作 获取 listdir 变换 port 模拟实现 原文地址:https://www.cnblogs.com/giaogiaogiao/p/14473890.htmlPython函数2
1、函数的基本类型
2、全局变量和局部变量
# 这里的name就是局部变量
def printInfo():
name=‘hubert‘
print(name)
pass
def TestMethod():
name=‘刘德华‘
print(name)
pass
TestMethod()
printInfo()
# 全局变量
pro=‘计算机技术‘ # 这是一个全局变量
name=‘ALEX‘ # 当全局变量和局部变量相同的时候,程序会优先执行函数内部定义的局部变量(强龙不压地头蛇)
def printInfo():
name=‘hubert‘
print(name,pro)
pass
def TestMethod():
# name=‘刘德华‘
print(name,pro)
pass
TestMethod()
printInfo()
修改全局变量
# 修改全局变量
pro=‘计算机技术‘ # 这是一个全局变量
name=‘ALEX‘ # 当全局变量和局部变量相同的时候,程序会优先执行函数内部定义的局部变量(强龙不压地头蛇)
def printInfo():
name=‘hubert‘
print(name,pro)
pass
def TestMethod():
# name=‘刘德华‘
print(name,pro)
pass
def changeGlobal():
‘‘‘
想要修改全局变量
:return:
‘‘‘
# pro=‘信息管理与信息系统‘ # 局部变量,无法修改全局变量,需要global先定义一下
global pro
pro = ‘信息管理与信息系统‘
pass
changeGlobal()
print(pro)
TestMethod()
printInfo()
3、函数参数的引用传值
a=1
print(id(a))
a=2
print(id(a)) # 撕掉1上面的变量a标签,然后贴到2上面(变量本身并不传递信息)
a=1
def func(x):
print(‘x的地址:{}‘.format(id(x)))
pass
print(‘a的地址:{}‘.format(id(a)))
func(a)
# 可变类型
li=[]
def testC(parms):
li.append([1,2,3,4,5])
print(id(parms))
print(‘内部的变量对象{}‘.format(parms))
pass
print(id(li))
testC(li)
print(‘外部的变量对象{}‘.format(li))
小结:
4、匿名函数(没有名字的函数)
lambda
关键字创建匿名函数,所谓匿名即这个函数没有名字不用def
关键字创建标准的函数。lambda 参数1,参数2,参数3: 执行代码语句
test=lambda x,y:x+y
print(test(1,3))
print(test(2,4))
# print(test(2,4,6)) # 报错,多了一个参数
# 找最大值
greater = (lambda x, y: x if x > y else y)
print(greater(3, 5))
print(greater(6, 2))
rs = (lambda x, y: x if x > y else y)(10,20) # 直接调用
print(rs)
5、递归函数
# 求阶乘
# 1、普通方法,循环来实现
def jiecheng(n):
result=1
for i in range(1,n+1):
result*=i
pass
return result
print(jiecheng(5))
# 2、递归方法
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1)
print(factorial(5))
案例:模拟实现树形结构的遍历(文件的搜索)
#递归例子 模拟实现树形结构文件的遍历
import os #引入文件操作模块
def find_file(file_path):
listRs=os.listdir(file_path) #得到该路径下所有文件夹
for fileItem in listRs:
full_path=os.path.join(file_path,fileItem) #获取完整的文件路径
if os.path.isdir(full_path): #判断是否是文件夹
find_file(full_path) #如果是,继续递归
pass
else:
print(fileItem)
pass
pass
else:
return
pass
find_file(‘F:\\项目管理‘) #填写自己电脑的路径名
上一篇:哈希算法:Sort
下一篇:IDEA生成Javadoc文档