给小白整理的最后一篇 Python知识点


本文摘自php中文网,作者coldplay.xixi,侵删。

python视频教程栏目介绍最后一篇知识点。

13、Python标准库

Python标准库是随Pthon附带安装的,包含了大量极其有用的模块。

我们主要了解下sys和os就够了。

13.1 sys模块  

sys模块主要是针对与Python解释器相关的变量和方法,不是主机操作系统。

sys.argv    #获取命令行参数列表,第一个元素是程序本身

sys.exit(n) #退出Python程序,exit(0)表示正常退出。当参数非0时,会引发一个SystemExit异常,可以在程序中捕获该异常

sys.version #获取Python解释程器的版本信息

sys.maxsize #最大的Int值,64位平台是2**63 - 1

sys.path    #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

sys.platform    #返回操作系统平台名称

sys.stdin   #输入相关

sys.stdout  #输出相关

sys.stderr  #错误相关

sys.exc_info()  #返回异常信息三元元组

sys.getdefaultencoding()    #获取系统当前编码,默认为utf-8

sys.setdefaultencoding()    #设置系统的默认编码

sys.getfilesystemencoding() #获取文件系统使用编码方式,默认是utf-8

sys.modules #以字典的形式返回所有当前Python环境中已经导入的模块

sys.builtin_module_names    #返回一个列表,包含所有已经编译到Python解释器里的模块的名字

sys.copyright   #当前Python的版权信息

sys.flags   #命令行标识状态信息列表。只读。

sys.getrefcount(object) #返回对象的引用数量

sys.getrecursionlimit() #返回Python最大递归深度,默认1000

sys.getsizeof(object[,default])    #返回对象的大小

sys.getswitchinterval() #返回线程切换时间间隔,默认0.005秒

sys.setswitchinterval(interval) #设置线程切换的时间间隔,单位秒

sys.getwindowsversion() #返回当前windwos系统的版本信息

sys.hash_info   #返回Python默认的哈希方法的参数

sys.implementation  #当前正在运行的Python解释器的具体实现,比如CPython

sys.thread_info #当前线程信息复制代码

上面是sys模块所有语法,我们看看就够了,了解下sys.argv和sys.path就足够了

sys.argv是一个脚本执行参数列表,列表的第一个元素是脚本名称,从第二个元素开始才是真正的参数。

# test.py

import sys

 

forindex, arg in enumerate(sys.argv):

    print("第%d个参数是: %s"% (index, arg))

 

#输出

第0个参数是: test.py

第1个参数是: 1

第2个参数是: 2

第3个参数是: 3

第4个参数是: 4

复制代码

argv:获取程序外部向程序传递的参数

#  script.py

 

import sys

print(sys.argv[0])

print(sys.argv[1])复制代码

运行:

# python script.py argv1

sys.py

argv1复制代码

sys.path

path是一个目录列表,供Python从中查找模块。在Python启动时,sys.path根据内建规则和PYTHONPATH变量进行初始化。sys.path的第一个元素通常是个空字符串,表示当前目录。

>>> sys.path

['','C:\\Python36\\Lib\\idlelib','C:\\Python36\\python36.zip','C:\\Python36\\DLLs','C:\\Python36\\lib','C:\\Python36','C:\\Python36\\lib\\site-packages']复制代码

sys.path本质上是一个列表,可以进行append、insert、pop、remove等各种列表相关的操作,但通常都进行append操作,添加自己想要的查找路径。

sys.stdin、sys.stdout、sys.stderr

  • stdin用于所有的交互式输入(包括input()函数)。
  • stdout用于print()的打印输出或者input()函数的提示符。
  • stderr用于解释器自己的提示信息和错误信息。

简而言之,这三个属性就是操作系统的标准输入、输出和错误流,它们返回的都是一个“文件类型”对象,支持read()、write()和flush()等操作。

>>> import sys

>>> s = sys.stdin.readline()       

i don't like python

>>> s

'i don't like python\n'

>>> sys.stdout.write(s)

i don't like python

20复制代码

python3中sys.stdin与input的区别:

input()方法和stdin()类似,不同的是input()括号内可以直接填写说明文字。

s = input('Please input something!')

 

print('Please input something!',)  # 逗号表示不换行

s = sys.stdin.readline()[:-1]  # -1 抛弃输入流中的'\n'换行符复制代码

当我们print(obj)的时候,事实上是调用了sys.stdout.write(obj+'\n'),将内容打印到控制台(默认是显示器),然后追加一个换行符。以下两行等价:

sys.stdout.write('hello'+'\n')

print('hello')复制代码

13.2 os模块  

该模块包含普遍的操作系统功能

  • os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'

  • os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径

  • os.getenv()和os.putenv()函数分别用来读取和设置环境变量

  • os.listdir()返回指定目录下的所有文件和目录名

  • os.remove()函数用来删除一个文件

  • os.system()函数用来运行shell命令

  • os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'

  • os.sep 操作系统特定的路径分割符

  • os.path.split()函数返回一个路径的目录名和文件名

  • os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录

  • os.path.existe()函数用来检验给出的路径是否真地存在

14、类中的特别方法

名称 说明
init(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
del(self) 恰好在对象要被删除之前调用。
str(self) 在我们对对象使用print语句或是使用str()的时候调用。
getitem(self,key) 使用x[key]索引操作符的时候调用。
len(self) 对序列对象使用内建的len()函数的时候调用。

下面的类中定义了上表中的方法:

classArray:

    __list = []

 

    def __init__(self):

        print"constructor"

 

    def __del__(self):

        print"destructor"

 

    def __str__(self):

        return"this self-defined array class"

 

    def __getitem__(self, key):

        returnself.__list[key]

 

    def __len__(self):

        returnlen(self.__list)

 

    def Add(self, value):

        self.__list.append(value)

 

    def Remove(self, index):

        del self.__list[index]

 

    def DisplayItems(self):

        print"show all items----"

        foritem in self.__list:

            printitem

 

arr = Array()   #constructor

print(arr)    #this self-definedarrayclass

print(len(arr))   #0

arr.Add(1)

arr.Add(2)

arr.Add(3)

print(len(arr))   #3

print(arr[0])   #1

arr.DisplayItems()

#show all items----

#1

#2

#3

arr.Remove(1)

arr.DisplayItems()

#show all items----

#1

#3

#destructor复制代码

15、列表推导式

通过列表综合,可以从一个已有的列表导出一个新的列表。

list1 = [1, 2, 3, 4, 5]

list2 = [i*2fori in list1ifi > 3]

 

print(list1)  #[1, 2, 3, 4, 5]

print(list2)  #[8, 10]复制代码

16、 *和**args区别

当函数接收元组或字典形式的参数的时候,有一种特殊的方法,使用*和**前缀。

该方法在函数需要获取可变数量的参数的时候特别有用。  

由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是**前缀,多余的参数则会被认为是一个字典的键/值对。

*args接受元组

**args接受字典

def powersum(power, *args):

    total = 0

    fori in args:

        total += pow(i, power)

    returntotal

 

print(powersum(2, 1, 2, 3)) 

 

#14 1^2+2^2+3^2 = 14

 

 

def displaydic(**args):

    forkey,value in args.items():

        print("key:%s;value:%s"% (key, value))

 

displaydic(a="one", b="two", c="three")

 

 

#key:a;value:one

#key:c;value:three

#key:b;value:two复制代码

17、lambda函数

lambda语句被用来创建新的函数对象,并在运行时返回它们。lambda需要一个参数,后面仅跟单个表达式作为函数体,而表达式的值被这个

新建的函数返回。 注意,print语句也不能用在lambda形式中,只能使用表达式。

func = lambda s: s * 3

print(func("Runsen "))  # Runsen Runsen Runsen

 

 

func2 = lambda a, b: a * b

 

print(func2(2, 3))  #6复制代码

18、exec/eval

exec语句用来执行储存在字符串或文件中的Python语句

eval语句用来计算存储在字符串中的有效Python表达式。

cmd ="print 'hello world'"

execcmd   #hello world

 

expression ="10 * 2 + 5"

print(eval(expression))    #25复制代码

exec还批量创建变量,这个大家可能忽视

fori in range(8):

    exec('v'+ str(i) +' = '+ str(i))

    print('v'+ str(i) +':',eval('v'+ str(i)))

     

v0: 0

v1: 1

v2: 2

v3: 3

v4: 4

v5: 5

v6: 6

v7: 7   

复制代码

19、assert

assert语句用来断言某个条件是真的,并且在它非真的时候引发一个错误--AssertionError。

相关阅读 >>

Python + wordcloud + jieba 十分钟学会生成中文词云

对于初学者如何理解 @classmethod 和@staticmethod

Python保存程序后怎么运行

Python基于flask上传文件的代码示例

Python刷题用哪个app

爬虫Python多久可以学会

分享Python如何实现头像拼接技术/

Python 的& 表示什么

编程Python是什么

Python中怎么实现星星排列

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...