参数:**两个星是字典,*一个星是隐藏参数
def total(a=5,*numbers,**phonebook): print('a',a) for single_item in numbers: print('single_item',single_item) for first_part,second_part in phonebook.items(): print(first_part,second_part) print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))
sys模块包含了系统功能(system)
sys.argv变量是一系列字符串的列表,包含了命令行参数这一列表。会将参数放在列表然后传递给程序。
from * import *和import *区别:import *还需要“模块.函数使用”,前者直接可以调用函数。避免使用后面一种。
内置的 dir()
函数能够返回由对象所定义的名称列表。 如果这一对象是一个模块,则该列表会包括函数内所定义的函数、类与变量。
每一个 Python 模块都定义了它的 __name__
属性。如果它与 __main__
属性相同则代表这一模块是由用户独立运行的
if __name__ == '__main__': print('aaaa') else: print('bbbb') >>>python test.py aaaa >>>python >>> import test bbbb>>>
字段与方法统称属性。字段有两种类型,实例变量(对象变量)和类变量。
一个类中的属性是归类所有,但类的所有实例都可以访问到
class Student(object): count = 0 def __init__(self,name): self.name=name Student.count+=1 >>> a=Student('a') >>> b=Student('b') >>> a.count 2 >>> b.count 2 >>> a.name 'a' >>> b.name 'b'
多态、多态性:https://www.cnblogs.com/luchuangao/p/6739557.html
继承之后,不会自动调用父类的__init__方法,要显式调用他,如果子类没有__init__,会自动调用基类的构造函数。
多重继承:继承元组中有超过一个类。
要想检查文本是否属于回文需要忽略其中的标点、空格与大小写。例如,“Rise to vote, sir.”是一段回文文本,但是我们现有的程序不会这么认为。你可以改进上面的程序以使它能够识别这段回文吗?
def is_reverse(test): test1=test.lower() test1=test1.strip() return test1==test1[::-1] something=input('>') if is_reverse(something): print('YES') else: print('NO')
pickle:Python 提供了一个叫作 Pickle
的标准模块,通过它你可以将任何纯 Python 对象存储到一个文件中,并在稍后将其取回。pickle的dump函数=封装(pickling),load函数=拆封(unpickling),可以看成是save/load。http://blog.csdn.net/sinat_29552923/article/details/70833455
try...except...finally...,finally一定会执行。Python所有的错误都是从BaseException
类派生的
raise语句抛出异常
class ShortInputException(Exception): '''一个由用户定义的异常类''' def __init__(self, length, atleast): Exception.__init__(self) self.length = length self.atleast = atleast try: text = input('Enter something -->') if len(text)<3: raise ShortInputException(len(text), 3) except EOFError: print('Why did you do an EOF on me?') except ShortInputException as ex: print(('ShortInputException: The input was ' + '{0} long, expected at least {1}') .format(ex.length, ex.atleast)) else: print('No exception was raised.')
输出:
Enter something --> a ShortInputException: The input was 1 long, expected at least 3 Enter something --> abc No exception was raised.
with语句:https://www.cnblogs.com/zhangkaikai/p/6669750.html
lambda可以创建一个新的函数,而不用特地编写一个独立的def块,只在这一个地方使用
points = [{'x': 2, 'y': 3}, {'x': 4, 'y': 1}] points.sort(key=lambda i: i['y']) print(points) 输出: [{'y': 1, 'x': 4}, {'y': 3, 'x': 2}]
装饰器:http://python.jobbole.com/86632/
pickle:http://blog.csdn.net/sxingming/article/details/52164249
电话簿程序:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' 一个命令行地址簿程序: 将信息保存在一个文件中 功能有浏览、添加、编辑、删除或搜索你的联系人 ''' import os import pickle class Person(object): personlist = {}#建立字典 def start(self): try:#不加异常处理会报错:EOFError: Ran out of input f = open('personlist.data','rb')#打开文件 Person.personlist=pickle.load(f) except EOFError: return None f.close() def end(self): f = open('personlist.data','wb') pickle.dump(Person.personlist,f) f.close() def scan_all(self): for name,telephone in Person.personlist.items(): print('名字:%s' % name) print('电话:%s' % telephone) def add_somebody(self): name = input('输入姓名') telephone = int(input('输入电话')) Person.personlist[name] = telephone def edict_somebody(self): name = print('输入要编辑的姓名') if name in Person.personlist: telephone = int(input('输入电话')) Person.personlist[name] = telephone else: print('查无此人') def del_somebody(self): name = print('输入要删除的姓名') if name in Person.personlist: del Person.personlist[name] print('删除成功') else: print('查无此人') def search_somebody(self): name = print('输入要查询的姓名') if name in Person.personlist: print('%s:%d' % (name, Person.personlist[name])) else: print('查无此人') def menu(): print('1.浏览\n2.添加\n3.编辑\n4.删除\n5.查询') menu() a=int(input('>')) people = Person() people.start() try: if a is 1: people.scan_all() elif a is 2: people.add_somebody() elif a is 3: people.edict_somebody() elif a is 4: people.del_somebody() elif a is 5: people.search_somebody() except ValueError: print('输入不合法') people.end()
主要的难点在于文件读写。而且此程序没用到面向对象的方法...还需要继续学习,只是学会了python的语法皮毛
'__name__' == '__main__' 的理解:http://blog.konghy.cn/2017/04/24/python-entry-program/