列表和元组

    列表就是所谓的数组,它拥有着数组的属性,但是在PY中,列表中封装了许多方法。
    元组就是静态数组,静态理解为不可变,元组的内容一旦创建之后就定了,不能通过代码来修改元组的内容和大小。虽然一个元组的内容不可以改变,但是可以将两个元组的内容合并成一个元组。然而,对于长度为1~20的元组,即使它们不在被使用,它们的空间也不会立刻还给系统,而是留待未来使用。这意味着当未来需要一个同样大小的新的元组时,我们不再需要向操作系统申请一块内存来存放数据,因为我们已经有了预留的空间。这样会话费更少的时间。

字典

    与列表和元组不同,字典存储的是键值对,键是不可以重复的。

副本问题

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

def change(num):
   num=10
a=1
change(a)
print("The a is ",a)
The a is  1

如上代码所示,有一个change函数,此函数的内容是想改变a的值。在函数调用中并未改变a的值,这是因为在函数调用过程中产生了副本,改变的只是副本的值,而不是对象本体。

可变参数

def myprint(arg,*vartuple):
   print("输出:",arg,end=" "),
   for var in vartuple:
      print(var,end=" ")
   return
myprint(10,20,30)
注:因为print每次调用过程中都会自动换行,若需要不换行,则可以在print函数内部增加end=“ ”,
    双引号中的内容可自拟。(此方法针对与3.x版本)。若是2.x版本,则可以在print后面加“,”。

参数列表解析

import sys, getopt

def main(argv):
   inputfile = ''
   outputfile = ''
   try:
      opts, args = getopt.getopt(argv,"hi:o:",["help","ifile=","ofile="])
   except getopt.GetoptError:
      print ('test.py -i <inputfile> -o <outputfile>')
      sys.exit(2)
   for opt, arg in opts:
      if opt in ("-h","--help"):
         print( 'help:test.py -i <inputfile> -o <outputfile>')
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print( '输入的文件为:', inputfile)
   print('输出的文件为:', outputfile)

if __name__ == "__main__":
   main(sys.argv[1:])

输出结果:

python test.py -i in.txt -o out.txt
输入的文件为: in.txt
输出的文件为: out.txt

python test.py --ifile in.txt --ofile out.txt
输入的文件为: in.txt
输出的文件为: out.txt

python test.py -h
help:test.py -i <inputfile> -o <outputfile>

代码解析:

  1. 处理所使用的函数叫getopt(),因为是直接使用import导入的getopt模块,所以要加上限定getopt才可以。
  2. argv代表执行py文件的参数。
  3. "hi: o:"代表执行文件的代码选项:-h -i -o。其中i和o后面分别有“:”,则代表-i选项和-o选项后面必须加参数。
  4. ["help","ifile=","ofile="]代表的是长选项,若长选项后面未加“=”,则代表该选项后面不加参数;若长选项后面有“=”可用--ifile和--ofile,用法与-i和-o相同。
  5. 一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此if __name__ == '__main__'的作用就是控制这两种情况执行代码的过程,在if __name__ == '__main__'下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。

    每个python模块(python文件,也就是此处的test.py和import_test.py)都包含内置的变量__name__,当运行模块被执行的时候,__name__等于文件名(包含了后缀.py);如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“main”等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,if __name__ == '__main__'结果为真

10-07 06:07