python笔记

参数:**两个星是字典,*一个星是隐藏参数

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/

转载于:https://www.cnblogs.com/betterluo/p/8439920.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值