Python 基础语法(四)

Python 基础语法(四)

--------------------------------------------接 Python 基础语法(三)--------------------------------------------

十、Python标准库

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

  1. sys模块  sys模块包含系统对应的功能

  • sys.argv  ---包含命令行参数,第一个参数是py的文件名
  • sys.platform  ---返回平台类型
  • sys.exit([status])  ---退出程序,可选的status(范围:0-127):0表示正常退出,其他表示不正常,可抛异常事件供捕获
  • sys.path    ---程序中导入模块对应的文件必须放在sys.path包含的目录中,使用sys.path.append添加自己的模块路径
  • sys.modules  ---This is a dictionary that maps module names to modules which have already been loaded
  • sys.stdin,sys.stdout,sys.stderr  ---包含与标准I/O 流对应的流对象
s = sys.stdin.readline()

sys.stdout.write(s)

  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()函数用来检验给出的路径是否真地存在

十一、其他

  1. 一些特殊的方法

名称 说明
__init__(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self) 恰好在对象要被删除之前调用。
__str__(self) 在我们对对象使用print语句或是使用str()的时候调用。
__lt__(self,other) 当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
__getitem__(self,key) 使用x[key]索引操作符的时候调用。
__len__(self) 对序列对象使用内建的len()函数的时候调用。

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

class Array:    __list = []

def __init__(self):        print "constructor"

def __del__(self):        print "destructor"

def __str__(self):        return "this self-defined array class"

def __getitem__(self, key):        return self.__list[key]

def __len__(self):        return len(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----"        for item in self.__list:            print item

arr = Array()   #constructorprint arr    #this self-defined array classprint len(arr)   #0arr.Add(1)arr.Add(2)arr.Add(3)print len(arr)   #3print arr[0]   #1arr.DisplayItems()#show all items----#1#2#3arr.Remove(1)arr.DisplayItems()#show all items----#1#3#destructor

  2. 综合列表

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

list1 = [1, 2, 3, 4, 5]list2 = [i*2 for i in list1 if i > 3]

print list1  #[1, 2, 3, 4, 5]print list2  #[8, 10]

  3. 函数接收元组/列表/字典

    当函数接收元组或字典形式的参数的时候,有一种特殊的方法,使用*和**前缀。该方法在函数需要获取可变数量的参数的时候特别有用。

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

  的键/值对。

def powersum(power, *args):    total = 0    for i in args:        total += pow(i, power)    return total

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

def displaydic(**args):    for key,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

  4. lambda

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

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

func = lambda s: s * 3print func("peter ")  #peter peter peter

func2 = lambda a, b: a * bprint func2(2, 3)  #6

  5. exec/eval

    exec语句用来执行储存在字符串或文件中的Python语句;eval语句用来计算存储在字符串中的有效Python表达式。

cmd = "print ‘hello world‘"exec cmd   #hello world

expression = "10 * 2 + 5"print eval(expression)    #25

  6. assert

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

flag = True

assert flag == True

try:    assert flag == Falseexcept AssertionError, err:    print "failed"else:    print "pass"

  7. repr函数

    repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。

    注意,在大多数时候有eval(repr(object)) == object。

    可以通过定义类的__repr__方法来控制对象在被repr函数调用的时候返回的内容。

arr = [1, 2, 3]print `arr`    #[1, 2, 3]print repr(arr)    #[1, 2, 3]

十二、练习

    实现一个通讯录,主要功能:添加、删除、更新、查询、显示全部联系人。

 1 import cPickle 2 import os 3 import sys 4  5 class Contact: 6     def __init__(self, name, phone, mail): 7         self.name = name 8         self.phone = phone 9         self.mail = mail10 11     def Update(self, name, phone, mail):12         self.name = name13         self.phone = phone14         self.mail = mail15 16     def display(self):17         print "name:%s, phone:%s, mail:%s" % (self.name, self.phone, self.mail)18 19 20 # begin 21 22 # file to store contact data23 data = os.getcwd() + os.sep + "contacts.data"24 25 while True:26     print "-----------------------------------------------------------------------"27     operation = raw_input("input your operation(add/delete/modify/search/all/exit):")28 29     if operation == "exit":30        sys.exit()31 32     if os.path.exists(data):33         if os.path.getsize(data) == 0:34             contacts = {}35         else:36             f = file(data)37             contacts = cPickle.load(f)38             f.close()39     else:40         contacts = {}41 42     if operation == "add":43         flag = False44         while True:45             name = raw_input("input name(exit to back choose operation):")46             if name == "exit":47                 flag = True48                 break49             if name in contacts:50                 print "the name already exists, please input another or input ‘exit‘ to back choose operation"51                 continue52             else:53                 phone = raw_input("input phone:")54                 mail = raw_input("input mail:")55                 c = Contact(name, phone, mail)56                 contacts[name] = c57                 f = file(data, "w")58                 cPickle.dump(contacts, f)59                 f.close()60                 print "add successfully."61                 break62     elif operation == "delete":63         name = raw_input("input the name that you want to delete:")64         if name in contacts:65             del contacts[name]66             f = file(data, "w")67             cPickle.dump(contacts, f)68             f.close()69             print "delete successfully."70         else:71             print "there is no person named %s" % name72     elif operation == "modify":73         while True:74             name = raw_input("input the name which to update or exit to back choose operation:")75             if name == "exit":76                 break77             if not name in contacts:78                 print "there is no person named %s" % name79                 continue80             else:81                 phone = raw_input("input phone:")82                 mail = raw_input("input mail:")83                 contacts[name].Update(name, phone, mail)84                 f = file(data, "w")85                 cPickle.dump(contacts, f)86                 f.close()87                 print "modify successfully."88                 break89     elif operation == "search":90         name = raw_input("input the name which you want to search:")91         if name in contacts:92             contacts[name].display()93         else:94             print "there is no person named %s" % name95     elif operation == "all":96         for name, contact in contacts.items():97             contact.display()98     else:99         print "unknown operation" 

-----------------------------------------------------   结束  -----------------------------------------------------

时间: 2024-10-05 23:47:50

Python 基础语法(四)的相关文章

Python 基础语法(三)

Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)-------------------------------------------- 七.面向对象编程 python支持面向对象编程:类和对象是面向对象编程的两个主要方面,类创建一个新的类型,对象是这个类的实例. 对象可以使用普通的属于对象的变量存储数据,属于对象或类的变量被称为域:对象也可以使用属于类的函数,这样的函数称为类的方法:域和方法可

python基础语法(三)

--------------------------------------------接 Python 基础语法(二)-------------------------------------------- 七.面向对象编程 python支持面向对象编程:类和对象是面向对象编程的两个主要方面,类创建一个新的类型,对象是这个类的实例. 对象可以使用普通的属于对象的变量存储数据,属于对象或类的变量被称为域:对象也可以使用属于类的函数,这样的函数称为类的方法:域和方法可以合称为类的属性. 域有两种类

Python基础语法(转)

作者:Peter 出处:http://www.cnblogs.com/Peter-Zhang/ Python 基础语法(一) Python的特点 1. 简单 Python是一种代表简单思想的语言. 2. 易学 Python有极其简单的语法. 3. 免费.开源 Python是FLOSS(自由/开放源码软件)之一. 4. 高层语言 使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节. 5. 可移植性 Python已被移植到很多平台,这些平台包括Linux.Windows.Free

python基础语法(一)

Python的特点 1. 简单 Python是一种代表简单思想的语言. 2. 易学 Python有极其简单的语法. 3. 免费.开源 Python是FLOSS(自由/开放源码软件)之一. 4. 高层语言 使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节. 5. 可移植性 Python已被移植到很多平台,这些平台包括Linux.Windows.FreeBSD.Macintosh.Solaris.OS/2.Amiga.AROS.AS/400. BeOS.OS/390.z/OS.

【转】Python基础语法

[转]Python基础语法 学习一门编程语言,通常是学习该语言的以下几个部分的内容: 基础语法:如,变量的声明与调用.基本输出语句.代码块语法.注释等: 数据类型:通常都为 数字.字符串.布尔值.数组.链表.Map.Set等: 运算符:算术运算符.赋值运算符.比较运算符.逻辑运算符.位运算符等: 流程控制语句:分支语句.循环语句: 类的定义与使用:这个是面向对象编程语言才有的内容: 常用API的使用:常用方法.工具类或模块的使用. 掌握上面的内容,就算是对一门编程语言入门了,剩下的就是不断的在使

Python 基础语法,这样理解

Python 基础语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异. 在本章中我们将来学习 Python 的基础语法,让你快速学会 Python 编程. 第一个 Python 程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗口如下: $ pythonPython 2.7.6 (default, Sep  9 201

【Python学习】Python 基础语法

目录 一.Python基础语法 1.1 第一个Python程序 1.1.1 交互式编程 1.1.2 脚本式编程 1.2 Python标识符 1.3 Python保留字 1.4 行和缩进 1.5 多行语句 1.6 Python 引号 1.7 Python注释 1.8 Python空行 1.9 print输出 Python 基础语法 1.1 第一个python程序 1.1.1 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行

python之最强王者(2)——python基础语法

背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于python学习,直接使用pycharm IDE开发. 一.第一个python程序 按照套路,入我编程界的门,必须得遵守门规,先来个hello,world,先干为敬! 客官请看图: 运行结果如下图: 看到这里不知道你想说什么,但是我只能说 想一下,java写出一个hello,world得有main方法吧,这得

Python 基础语法

Python 基础语法 Python语言与Perl,C和Java等语言有许多相似之处.但是,也存在一些差异. 第一个Python程序 E:\Python>python Python 3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:37:12) [MSC v.1600 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "