学习内容:
函数的定义方式
无参函数
不需要接收外部传入的参数
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)
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'>
爬虫学习
函数的定义方式
无参函数
不需要接收外部传入的参数
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)
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'>