Python包系列
2022/6/24更新
python导包相关问题
解释器一遇到import语句,就会加载它并执行。所以一般包中的代码都是函数或者类封装,方便开发者调用。
如果解释器执行到import语句,如果在搜索路径中找到了指定的模块,就会加载它。
一个模块在第一次导入时加载并执行(顶层代码),后续在被导入时不会再执行。
如果在一个模块的顶层导入的模块,该模块具有Global的作用域,如果我们是在函数内部导入的,则具有Local的作用域。
参考文章https://bbs.huaweicloud.com/forum/thread-78617-1-1.html
fibs
为了输入101010
def fib(n):
a,b = 0,1
while b < n:
print(b,end="") # 这个是为了输入101010
a,b = b,a
print()
def fib2(n):
result = []
a,b = 0,1
while b < n:
result.append(b)
a,b=b,a+b
return result
# fib(2)
print(fib2(2))
main
这里直接运行咋输入else中的内容;不知道的难题
if __name__ == "__mian__":
print('直接运行')
else:
# 这里直接运行咋输入else中的内容;不知道的难题
print("被作为模块导入")
# Python中不支持直接带点或者以数字开头的文件作为模块导入
导入以上以上两个函数
Python中的__name__是当前模块名,当直接打印__name__时为__main__,看样子时直接打印了,导入在打印的话就是导入的模块名(要加模块前缀),好鸡肋
import fibs
# 打印出包的模块并且打印出该包执行的函数
# print(fibs) # <module 'fibs' from 'd:\\百度网盘企业版\\a_pactice\\10月的救赎\\包\\fibs.py'>
import main1
print(fibs.__name__) # 打印出模块的名字fibs
print(main1.__name__) # main1
print(__name__)# 模块直接运行时的名字为__main__
# 判断文件是否被运行还是作为模块被导入,可以用打印模块名字的方法
sys系列
sys.modules查找已导入的包
import sys
# print(sys.modules.keys())
# print(sys.modules.values())
#
print(sys.modules["os"]) #
获取模块搜索路径
sys.path中存储了python结束其需要搜索的所有路径(不太理解),并且我们可以通过修改该变量修改搜索模块的路径
for path in sys.path:
print(path)
导入其他模块路径
若想要导入的模块不在sys.path包含的路径(当前目录,内置模块,第三方模块)中。
需要用sys.path.append(‘路径名’)添加到搜索目录中。
退出程序
sys.exit()执行之后,程序就会结束
直接运行返回缺省参数,带参数运行则打印
# 执行到程序末尾,解释器会自动退出,如果需要中途退出、
# 可调用sys.exit()函数
# 它带有一个可选的整数参数返回给调用它的程序(0是正常退出,其他为异常)
if len(sys.argv) <= 1:
print('缺省参数')
sys.exit(1)
for ary in sys.argv:
print(ary)
处理命令行参数
返回一个列表,可以在终端对命令行执行该语句,在之后可添加多个元素,有点eval的感觉,外部执行传参
print(sys.argv) #
识别操作系统
print(sys.platform) # win32 windows平台输出win32
os系列
重命名文件;两个参数最好在同一文件夹,不然就要写绝对路径
os.rename('a.txt','a.py')
创建单层目录
os.makedir只能在有父目录的情况下创建子目录,如果父目录不存在则不能创建,并输出错误
os.mkdir('d:\\test') #
创建多层目录;父目录不存在则先创建父目录
os.makedirs('d:\\test\\1')
其他待整理
# 封装了操作系统的文件和目录操作
import os
# 打印当前位置
a = __file__ #__file__变量可进行赋值
print(a)
print(__file__) # 打印当前位置
# print(os.path.dirname(__file__)) # 答应当前位置所在的文件夹
# 获取当前路径以及切换当前路径
print(os.getcwd()) # 是上面的dirname函数的父文件夹
# 切换
os.chdir('C:\\')
print(os.getcwd()) # C:\
# 重命名文件;两个参数最好在同一文件夹,不然就要写绝对路径
# os.rename('a.txt','a.py')
# 查看指定路径是否存在
folder = os.path.exists('c:\windows')
print(folder) # True
# 判断给出的路径是否是文件
floder = os.path.isfile('c:\windos')
print(floder) # False
# 判断给出的路径是否是一个目录
folder = os.path.isdir('c:\windows')
print(floder) # False
# 获取系统环境变量
for k,v in os.environ.items():
print(k,'==>',v)
math模块
实现了正常情况下内置平台C库中才有的很多IEEE函数,我们可以使用浮点数完成复杂的数学运算,包括对数运算和三角函数运算。
这里的math模块直接用函数向上或向下取整
向上取整
import math
'''
2
1
0
-1
'''
print(math.ceil(1.7))
print(math.ceil(0.3))
print(math.ceil(-0.3))
print(math.ceil(-1.7))
向下取整
python中的除法,整除,默认向下取整,大于5才入(变大),负数的话,大于-5才入(变小)
'''
1
0
-1
-2
'''
print(math.floor(1.7))
print(math.floor(0.3))
print(math.floor(-0.3))
print(math.floor(-1.7))
笔记来源:零基础Python从入门到精通
努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。