50个基本的python命令
01 导入模块
import XXXXX
import XXXXX as xm
from XXXXX import *
上面三个常用的导入句式, 前两句是把模块连带命名空间导入. 要访问模块的时候,还需要使用模块名称. from句式可以理解为把模块里面的相关代码直接拷贝到当前文件中了,此时导入的模块内部函数,跟本文件内的内部函数一样直接调用.
02 reload 重新加载模块
这个命令的使用场景如下, 在交互界面下, 你之前已经加载过某个模块了import XXXXXX
, 因为某种原因你使用外部编译器修改调整了这个模块XXXXXX, 但在交互界面下,你是没有办法继续通过命令import XXXXXX
来重新加载你修改的内容的. 此时需要XXXXXX.reload()
. 模块里面的所有变量赋值因为reload会被更新. 但是如果你修改的内容包括删除一个变量, 那么即使reload模块,这个变量因为之前存在,还会继续存在
03 pip install命令
04 执行脚本exec("python expressions")
05 ipython
06 eval()函数
07 assert断言
08 map函数
def addition(n):
return n + n
numbers = (1, 2, 3, 4)
result = map(addition, numbers)
print(list(result))
map函数返回的是map对象,可以通过list转换成列表.
09 虚拟环境
创建虚拟环境的办法很多,选择一个够用就好。开发一个项目的时候,一定要先创建虚拟环境。
10循环
11 filter函数
filter函数和map函数都是对原有的序列应用规则,产生新的序列. 入参的顺序都是规则+操作序列
filter函数结合lambda函数表达式,可以取代一些for循环,让代码更加简洁。比如我有一个列表,要通过过滤得到一个新的列表。下面的代码比用for循环简洁很多。需要好好掌握。
>>> a = [1,-1,2,-2,3,-4,4,-9]
>>> b = list(filter(lambda x:x>0, a))
>>> b
[1, 2, 3, 4]
12 reduce() 函数
09 staticmethod
类似于c++类里面定义的静态函数,这个函数的调用不需要类的实例化.
class Maths():
@staticmethod
def addNum(num1, num2):
return num1 + num2
# Driver's code
if __name__ == "__main__":
# Calling method of class
# without creating instance
res = Maths.addNum(1, 2)
print("The result is", res)
10 iter()函数
首先要弄明白可迭代和迭代器的含义. 迭代器是一个可以记住已遍历位置的对象, 迭代器只往前, 遍历到达末尾后会抛出异常. 对于可迭代的容器使用 for xx in container:
语句时, 本质上for语句会对container作用iter()函数,生成这个容器的迭代器,然后内部使用next依次遍历,并且检测到异常后退出遍历. iter函数最有用的用法如下
with open("bigFile.txt") as fp:
for line in iter(fp.readline, ''):
process_line(line)
对于一个超大的文件,如果你调用lines = fp.readlines(), 那么这时候所有的行都会存放在lines列表中,这样对内存的消耗是比较大的.但是如果使用for line in iter(fp.readline,''):
语句,那么for循环中,每次都会调用一次fp.readline. 得到值赋给line, 一直循环直到readline读取到空字符为止. 这样的惰性计算处理,使得内存的使用得到了优化. 而类似下面的应用,感觉就没有什么意义了:
a = [1,2,3,4,5]
for i in iter(a):
print(i)
每次执行iter(a)的时候,会读取a中的一个元素,并赋值给i. 此时所有的数据已经在a容器里面,改占用的内存已经被占用了.不如下面的写法来得直接
a = [1,2,3,4,5]
for i in a:
print(i)
11 sorted(listA)函数
a=[1,2,5,3,4]
print(sorted(a))
注意sorted默认从小到大进行排序, 而且sorted不是在入参a上进行排序,而是生成一个新的列表. 旧的列表a是没有变化的.
12 yield
带有yield的函数定义,返回的是一个迭代器. yield相当于return, 下一次迭代的时候,会从上一个yield的后一行进行执行.
def testYield():
yield 1
yield 2
yield 3
yield 4
yield 5
res=testYield()
for item in res:
print(item)
13 shelving data 序列化任意对象
可以通过shelving把任意python对象序列化存储到文件中,可以认为shelve类似于一个key-value数据库.
flag='c'表示如果数据库文件不在,就创建.
import shelve
d = shelve.open('my.db', flag = 'c')
d['abc'] =['a','b']
d.close()
os.environ
os.environ可以设定和查询环境变量
设定环境变量如下['CUDA_VISIBLE_DEVICES'] = "0,1"
查询环境变量如下
os.environ.get('CUDA_VISIBLE_DEVICES')
name的作用
一个py文件会绑定一个自己的name变量。如果这个py文件是被直接运行的,这个变量会被解释器赋值为“main”,如果是被import进来的,会被赋值为文件名。
遍历出说明满足条件的目录
f = glob.glob(r"/home//.py")
快捷的获取一个全路径下的文件名称
os.path.basename("/home/test/a.txt")
可以直接得到a.txt 如果路径是纯文件夹,没有文件名,那返回的是空。
python中的变量实质
(https://blog.csdn.net/qq_37891604/article/details/124528827)