概念
定义
- 声明
a = 1
if a == 1:
def func():
print('a == 1')
else:
def func():
print('a != 1')
- 传参
# 默认参数放在最后
def func(x,y,z=3):
return x + y + z
# 顺序传参
func(1,2)
# 命名传参
func(y=1,x=2)
# 不定长参数
def func(*var1,**var2):
print(var)
func(1,2,3,a=1,b=2,c=3)
# 结果:(1,2,3){'a':1,'b':2,'c':3}
- 返回值
def func():
return 1,2
# 接收一个元组
var = func()
# 接收两个数字
var1,var2 = fec()
- 多态
根据参数类型的不同,做出不同的操作
# abcabcabc
'abc' * 3
# 6
2 * 3
作用域
# 全局
a = 1
def func():
# 局部
a = 2
# 2
print(a)
# 1
print(a)
# 全局与局部关联
def func():
global a
a = 2
# 2
print(a)
# 2
print(a)
- 传引用(参数为可变对象,如:列表)
mylist = [1,2,3]
def func(var):
var[0] = 'a'
# ['a',2,3]
print(var)
func(mylist)
# ['a',2,3]
print(mylist)
- 拷贝,防止全局变量被修改
mylist = [1,2,3]
def func(var):
var1 = var[:]
var1[0] = 'a'
# ['a',2,3]
print(var1)
func(mylist)
# [1,2,3]
print(mylist)
- 函数嵌套
def func1():
pass
def func():
# 完善 func1 方法
global func1
def func1():
print('abc')
# abc
func1()
匿名函数
f = lambda x,y : x + y
# 3
f(1,2)
f = lambda x,y=1 : x + y
# 2
f(1)
funclist = [lambda x : x*x,lambda x : x*x*x,lambda x : x*x*x*x]
# 9 27 81
for func in funclist:
func(3)
递归
- 目的:当你发现将要做的就是现在做的(持续做一件事),那么使用递归
- 循环列表求和(占用内存小,效率低)
mylist = [1,2,3,4,5]
mysum = 0
while mylist:
mysum += mylist[0]
# 把第一个元素扔掉
mylist = mylist[1:]
- 递归列表求和(占用内存大,效率高)
mylist = [1,2,3,4,5]
def func(var):
if var == []:
return 0
# 返回:列表第一个元素 + func(去掉第一个元素的列表)
return var[0] + func(var[1:])
mysum = func(mylist)
#1 + func([2,3,4,5])
#2 + func(2,4,5)
#3 + func(4,5)
#4 + func(5)
#5 + func([])
#0
- 每天吃一半饼干
cookie = 5000
def eat(cookie,day=0):
if cookie < 1:
print('%d天,饼干吃完了' % day)
return
cookie /= 2
day += 1
eat(cookie,day)
eat(cookie)
OS 模块
- 作用:管理进程与环境,处理文件系统操作(如:删除、重命名、遍历目录、管理权限)。
import os
# 平台类型(nt:windows、posix:linux/unix)
print(os.name)
# 工作路径
print(os.getcwd())
# 获取当前目录下的文件及文件夹(只有一层)
print(os.listdir())
# 删除
os.remove('')
os.rmdir('')
# 创建
os.mkdir('')
os.makedirs(r'a\b\c')
# 执行命令
os.system('cls')
# 修改工作路径
os.chdir('')
# 修改权限
os.chmod('')
- os.path
os.path.isdir('')
os.path.isfile('')
os.path.islink('')
os.path.getsize('')
# 获取绝对路径,不会验证路径是否存在
os.path.abspath('')
# 分割为文件路径和文件
os.path.split('')
# 返回最末层文件名
os.path.basename('')
# 判断路径是否存在
os.path.exists('')
# 路径拼接,不会验证路径是否存在
os.path.join('','')
- 递归遍历目录
import os
mypath = input('请输入要遍历的路径')
def seedir(mypath,level=0):
level += 2
if not mypath:
# 默认遍历工作路径
mypath = os.getcwd()
mylist = os.listdir(mypath)
for var in mylist:
print('-' * level + '|' + var)
# 拼接绝对路径
var = os.path.join(mypath,var)
if os.path.isdir(var):
seedir(var,level)
seedir(mypath)