函数
def my_function():
代码块
return xxx
代码块
def function1():
print('执行function1')
def function2():
print('执行function2')
print('function1执行结束')
return function2
function1()()
执行function1
function1执行结束
执行function2
基本参数传递
a = 1
def func(b):
print('在函数内部修改之前,形参b的内存地址为:%s'%id(b))
b = 2
print('在函数内部修改之前,形参b的内存地址为:%s'%id(b))
print('函数内部的b为:%s'%b)
print('调用函数之前,变量a的内存地址为:%s',id(a))
func(a)
print('调用函数之后,函数外部的变量a为:',a)
调用函数之前,变量a的内存地址为:%s 140428503968048
在函数内部修改之前,形参b的内存地址为:140428503968048
在函数内部修改之前,形参b的内存地址为:140428503968080
函数内部的b为:2
调用函数之后,函数外部的变量a为: 1
a = [1,2,3]
def func(b):
print('在函数内部修改之前,变量b的内存地址为:',id(b))
b.append(4)
print('在函数内部修改之前,变量b的内存地址为:',id(b))
print('函数内部的b为:',b)
print('调用函数之前,变量a的内存地址为:%s',id(a))
func(a)
print('调用函数之后,函数外部的变量a为:',a)
调用函数之前,变量a的内存地址为:%s 140427826459904
在函数内部修改之前,变量b的内存地址为: 140427826459904
在函数内部修改之前,变量b的内存地址为: 140427826459904
函数内部的b为: [1, 2, 3, 4]
调用函数之后,函数外部的变量a为: [1, 2, 3, 4]
参数类
函数有几个参数就得传几个参数
函数的参数列表内已经指定该参数值为多少,比如 def function(x,n=2)
def func(a=[]):
a.append('A')
return a
print(func())
print(func())
print(func())
def func(a=[]):
a.append('A')
return a
['A']
['A', 'A']
['A', 'A', 'A']
def func(*args):
print(args)
for param in args:
print(param)
func(1,2,3)
t = (1,2,3)
func(*t)
结果:(1, 2, 3)
1
2
3
(1, 2, 3)
1
2
3
def func(**kwargs):
print(kwargs)
dic = {
'name':'xiao',
'age':22
}
func(**dic)
func(d=dic)
结果:{'name': 'xiao', 'age': 22}
{'d': {'name': 'xiao', 'age': 22}}
def func(*args,**kwargs):
pass
func(1,2,3,name='xiao',age=22)
变量的作用域
在函数内部可以访问函数外部的变量(外部变量)
在函数外部不能访问函数内部的变量(局部变量)
age = 10
def Age(arg1,arg2):
global age
age = arg1+arg2
print(age)
print(id(age))
return age
Age(10,20)
print(age)
print(id(age))
结果:30
139690303171792
30
139690303171792
代表函数
Rang
for item in range(5):
print(item)
for item in range(1,11,3):
print(item)
匿名函数
result = lambda x:1 if x > 0 else 0
result(1)
递归函数
def sum_number(n):
if n == 1:
return 1
return n + sum_number(n-1)
sum_number(5)
结果:15
文件操作
open(
file,
mode='r',
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None,
)
fp = open('./xiao.txt','w')
fp.write('xiao youpei')
fp.close()
fp = open('./xiao.txt','r')
text = fp.readlines()
print(text)
fp = open('./xiao.txt','w')
fp.write('xiao xiao')
re = fp.tell()
print(re)
fp = open('./xiao.txt','r')
fp.seek(5,0)
text = fp.read(4)
print(text)
with open('./xiao.txt','w') as fp:
fp.write('xiao')
模块和包
模块/包
import time as t
import time
time.sleep(1)
from time import sleep
sleep(1)
if __name__ == '__main__':
print('xxx', __name__)
if __name__ == '__main__':
pass
结果:xxx __main__
常见模块
time
import time
print(time.time())
import time
time.strftime('%Y-%m-%d %X')
'2022-01-12 18:48:36'
import time
time.sleep(2)
random
import random
random.random()
import random
random.randint(1,10)
import random
list = [1,2,3,4,5]
random.sample(list,2)
random.shuffle(list)
import random
def random_str():
code = ""
for i in range(5):
num = random.randint(0, 9)
alf = chr(random.randint(65, 90))
add = random.choice([num, alf])
code = ''.join([code, str(add)])
return code
code = random_str()
print(code)
OS
os.makedirs('./name/age/')
os.mkdir('./name')
os.system('ls')
os.path.abspath('./')
os.path.exists('./xxx')
os.path.isfile(path)
os.path.getatime(path)
os.path。getsize(path)
序列化
import json
dic = {
'name':['xiao','li'],
'age':22
}
r = json.dumps(dic)
print(r)
import json
str = '{"name": ["xiao", "li"], "age": 22}'
dic = json.loads(str)
print(dic)
import json
dic = {
'name':['xiao','li'],
'age':22,
'sex':'man'
}
with open('./xiao.txt','a') as fp:
json.dump(dic,fp)
import json
with open('./xiao.json','r+') as fp:
dic = json.load(fp)
print(dic)
正则
基于re模块进行正则匹配操作
单字符:
.:除换行外所有字符
[]:[aoe] [a-w] 匹配集合中任意一个字符
\d:数字 [0-9]
数量修饰:
*:任意多次 >=0
+:至少一次 >=1
?:可有可无 0次或者一次
{m}: 固定m次 hello{3,}
{m,}:至少m次
{m,n}:m-n次
边界:
$:以某某开头
^:以某某开头
分组:
(ab)
贪婪模式: .*
非贪婪模式: .*?
import re
str = 'http://www.baidu.com and https://xiaoyoupei.com'
result = re.findall(pattern=r'https*://', string=str)
print(result)
结果:
['http://', 'https://']
import re
str = 'xiao<html>hello</html>xiao'
result = re.findall(pattern=r'<html>(.*)</html>', string=str)
print(result)
结果:
['hello']
import re
str = 'xiao@xiao.edu.com'
result = re.findall(pattern='@(.*?)\.', string=str)
print(result)
|