函数的定义方式
无参函数
不需要接收外部传入的参数
def foo():
print('from foo')
foo()
结果:
from foo
有参函数
需要接收外部传入的参数
def login(user,pwd):
print(user,pwd)
login('zxy','111')
结果:
zxy 111
传参缺一不可
比较两个数的大小
def max2(x,y):
if x > y:
print(x)
else:
print(y)
max2(10,20)
结果:
20
空函数
在一些比较难实现的功能,会导致暂时无法继续编写代码。
所以在一般在生产开发中,可以事先定义好函数
def func():
pass # pass代表什么都不做
函数的返回值
在调用函数时,需要接收函数体内部产生的结果,用return返回值
def max2(x,y):
if x > y:
return x
else:
return y
res = max2(10,20)
print(res)
结果:
20
函数对象(函数名指向的内存地址)
def func():
pass
def func2():
pass
dict1 = {
'1': func,
'2': func2
}
choice = input('请输入功能编号:').strip()
if choice in dict1:
dict1[choice]()
结果:
请输入功能编号:1
<function func at 0x000001FE2BC18D08>
请输入功能编号:2
<function func2 at 0x0000022190C18D90>
函数嵌套
嵌套定义:
在函数内,定义函数嵌套调用:
def func1():
print('func1...')
def func2():
print('func2...')
def func3():
print('func3...')
# ...
return func3
return func2
func2 = func1()
func3 = func2()
func3()
结果:
func1...
func2...
func3...
另一种表现形式
def func1():
print('func1...')
def func2():
print('func2...')
def func3():
print('func3...')
# ...
func3()
func2()
func1()
结果:
func1...
func2...
func3...
名称空间
python解释器自带的:内置名称空间
自定义的py文件中,定着最左边定义的:全局名称空间
函数内部定义的:局部名称空间
模块与包
#import 模块名
内置模块:
time
json
os
sys
time模块
import time # 导入time模块
print(time.time()) # 获取时间戳
# 等待2s
time.sleep(2)
print(time.time())
结果:
1560410196.7074902
1560410198.7119384
os模块
import os
# 判断zxy.txt文件是否存在
print(os.path.exists('zxy.txt')) # True
print(os.path.exists('zxy1.txt')) # False
print(os.path.exists(r'E:\pytest\2019年6月13日\zxy.txt')) # True
print(os.path.dirname(__file__)) # 获取当前文件所在的根目录
结果:
True
False
True
sys模块
import sys
# 获取python在环境变量中的文件路径
print(sys.path)
sys.path.append(os.path.dirname(__file__)) #追加当前文件所在的根目录到环境变量中
print(sys.path)
结果:
['E:\\pytest\\2019年6月13日', 'E:\\pytest', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\16968\\AppData\\Roaming\\Python\\Python37\\site-packages', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\beautifulsoup4-4.6.3-py3.7.egg']
['E:\\pytest\\2019年6月13日', 'E:\\pytest', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\16968\\AppData\\Roaming\\Python\\Python37\\site-packages', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages', 'C:\\Users\\16968\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\beautifulsoup4-4.6.3-py3.7.egg', 'E:/pytest/2019年6月13日']
json模块
import json
user_info = {
'name': 'zxy',
'sex': 'man'
}
# dumps: 序列化
# 1.把字典转换成json数据
# 2.再把json数据转换成字符串
res = json.dumps(user_info)
print(res)
print(type(res))
with open('user.json', 'wt', encoding='utf-8') as f:
f.write(res)
# loads:反序列化
with open('user.json','rt', encoding='utf-8') as f:
res = f.read()
user_dict = json.loads(res)
print(user_dict)
print(type(user_dict))
结果:
{"name": "zxy", "sex": "man"}
<class 'str'>
{'name': 'zxy', 'sex': 'man'}
<class 'dict'>
还有另一种方法:
#dump
with open('user_info.json', 'wt', encoding='utf-8') as f:
# dump 自动触发f.write()
json.dump(user_info, f)
# load
with open('user_info.json', 'rt', encoding='utf-8') as f:
# res = f.read()
# user_dict = json.loads(res)
#
# load:自动触发f.read()
user_dict = json.load(f)
print(user_dict)
print(type(user_dict))
结果:
{'name': 'zxy', 'sex': 'man'}
<class 'dict'>