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从入门到精通

posted @ 2021-11-25 21:51  索匣  阅读(26)  评论(0编辑  收藏  举报