python模块开发
import
- 说的简单点就是引入一个有python代码的文件
- 引入使用 import 关键字
- 默认import 不指定目录。会去当前同级目录中查找
a.py 文件定义一个方法getName
#!/usr/bin/python3
def getName(name):
return '我的名字是'+name
text.py 引入a.py 并调用getName方法
#!/usr/bin/python3
import a
res = a.getName('a')
print(res)
#输出结果:我的名字是a
from...import..
- 当一个python中有多个方法时,但是我们只是想引入需要的部分,可以使用from...import...
- from 是引入的文件 import 是需要引入的模块
a.py 中有多个def 函数
#!/usr/bin/python3
def getName(name):
return '我的名字是'+name
def getAge():
return '我的年龄是18'
def getSex():
return '我的性别是女'
def getNothing():
return 'nothing'
- text.py 文件只想引入 getName 和 getAge模块
#!/usr/bin/python3
from a import getName, getAge
res = getName('a')
age = getAge()
print(res)
print(age)
#输出结果:
我的名字是a
我的年龄是18
如果想引入所有的模块 可以使用 *
#!/usr/bin/python3
from a import *
res = getName('a')
age = getAge()
sex = getSex()
print(res)
print(age)
print(sex)
#输出结果:
我的名字是a
我的年龄是18
我的性别是女
如果修改全局变量的值
- 使用global 关键字
#!/usr/bin/python3
a = 1
def add():
global a
a = a+1
add()
print(a)
输出结果: 2
在引入模块的时候不清楚模块中提供的一些方法、属性 可以通过dir来查看
#!/usr/bin/python3
import a
content = dir(a)
print(content)
#输出结果:['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'getAge', 'getName', 'getNothing', 'getSex']
locals() 和 globals() 函数
- locals() 在函数中调用可以查看当前作用域的变量
- globals() 在函数中调用可以查看当前作用域中能访问的全局变量
#!/usr/bin/python3
a = 1
b = 2
def num():
c = 3
d = 4
print('能反问的局部变量:', locals())
print('能访问的全局变量',globals())
num()
#输出结果:
能反问的局部变量: {'c': 3, 'd': 4}
能访问的全局变量 {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x103eccef0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'text.py', '__cached__': None, 'a': 1, 'b': 2, 'num': <function num at 0x103db3268>}