sys模块
sys.argv 为例
sys.argv列表包含命令行参数
import sys
if len(sys.argv) < 2:
print ('Nso action specified.')
sys.exit()
if sys.argv[1].startswith('--'):
option = sys.argv[1][2:]
if option == 'version':
print( 'Version 1.2')
elif option == 'help':
print('--version or --help ')
else:
print ('Unknown option.')
sys.exit()
else:
print('argvs should be --version or --help')
在sys.argv列表中总是至少有一个项目。它就是当前运行的程序名称,作为sys.argv[0],其他的命令行参数在这个项目之后。
os模块
这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。
- os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
- os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
- os.listdir()返回指定目录下的所有文件和目录名。
- os.remove()函数用来删除一个文件。
- os.system()函数用来运行shell命令。
import os
# 在cmd中执行ping www.baidu.com
os.system("ping www.baidu.com ")
单语句块
语句块是通过它的缩进层次与其它块区分开来的。然而这在大多数情况下是正确的,但是并非100%的准确。如果你的语句块只包含一句语句,那么你可以在条件语句或循环语句的同一行指明它。
flag = True
if flag: print 'Yes'
列表综合
在很多时候,我们都是使用循环来处理列表中的每一个元素,而使用列表综合可以用一种更加精确、简洁、清楚的方法完成相同的工作 。
listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]
在函数中接收元组和列表
当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用 * 和 ** 前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。
def sumUp(*args):
totle = 0
for i in args:
totle += i
return totle
print(sumUp(1,2,3,4,5))
# 结果
15
由于在args变量前有 * 前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是 ** 前缀,多余的参数则会被认为是一个字典的键/值对。
def fun(**args):
print(args)
fun(num1 = 1, num2 = 2)
# 结果
{'num1': 1, 'num2': 2}
lambda形式
lambda语句被用来创建新的函数对象,并且在运行时返回它们。
编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
#将一个 list 里的每个元素都平方:
map( lambda x: x*x, [y for y in range(10)] )
#这个写法要好过
def sq(x):
return x * x
map(sq, [y for y in range(10)])
exec语句
exec语句用来执行储存在字符串或文件中的Python语句。
exec('print (\'123\')')
eval语句
eval语句用来计算存储在字符串中的有效Python表达式
eval('2*3')
assert语句
assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError。
li = [1,2,3,4]
assert len(li) >=4
li.pop()
#下句会引发error
assert len(li) >=4
- 可以在预计正常情况下程序不会到达的地方放置断言 :assert false
- 断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
- 使用断言测试方法执行的前置条件和后置条件
- 使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)
不要使用断言语句去修改变量和改变方法的返回值
repr函数
repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。repr函数和反引号用来获取对象的可打印的表示形式。你可以通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。
>>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};
>>> repr(dict)
"{'google': 'google.com', 'runoob': 'runoob.com'}"