• 【笔记】Python简明教程


    Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中文 s='''多行文本 这是第二哈''' #'''表示多行注释。也可以用""" 布尔型:True,False docString:文档字符串。eg:

    # Filename : nice.py
    # encoding:utf8
    def printMax(x, y):
        u'''输出两个数字中大的一个。
     
        两个数字的值必须是整数'''
        x=int(x)
        y=int(y)
     
        if x>y:
            print x,'is maximum'
        else:
            print y,'is maximum'
     
    printMax(3,5)
    print printMax.__doc__
    

    会把中文注释都输出 python使用模块: ·sys模块:

    # Filename : nice.py
    # encoding:utf8
    import sys
    for i in sys.argv:
        print i
    

    或者,使用:

    # Filename : nice.py
    # encoding:utf8
    from sys import argv
    for i in argv:
        print i
    

    在vim中执行w之后, 执行!python % 123 sdfds 那么将输出123 sdfds(分两行输出) ·使用__main__模块:

    # Filename : nice.py
    # encoding:utf8
    if __name__=='__main__':
        print 'This program is being run by itself'
    else:
        print 'I am being imported from another module'
    

    ·使用自定义的模块

    # Filename : nice.py
    # encoding:utf8
    import mymodule
     
    mymodule.sayhi()
    print 'Version', mymodule.version
    
    # Filename:mymodule.py
    # encoding:utf8
    def sayhi():
        print 'Hi, this is my module.'
    version = '0.1'
    

    数据结构部分: 使用列表list:

    # Filename : nice.py
    # encoding:utf8
    shoplist=['apple','mango', 'carrot', 'banana']
    print 'I have', len(shoplist),'items to purchase.'
     
    print 'These items are:',
    for item in shoplist:
        print item,
     
    print '
    I alse have to buy rice.'
    shoplist.append('rice')
    print 'My shopping list is now', shoplist
     
    print 'I will sort my list now'
    shoplist.sort()
    print 'Sorted shopping list is', shoplist
     
    print 'The first item I will buy is', shoplist[0]
    olditem=shoplist[0]
    del shoplist[0]
    print 'I bought the', olditem
    print 'My shopping list is now', shoplist
    

    ·元组的使用:类似于数组,但是可以嵌套用

    # Filename : nice.py
    # encoding:utf8
    zoo=('wolf','elephant','penguin')
    print 'Number of animals in the zoo is', len(zoo)
     
    new_zoo=('monkey','dolphin',zoo)
    print 'Number of animals in the new zoo is', len(new_zoo)
    print 'All animals in new zoo are', new_zoo
    print 'Animals brought from old zoo are', new_zoo[2]
    print 'Last animal brought from old zoo is', new_zoo[2][2]
    

    ·使用元组输出(print语句中的参数输出哈哈)

    # Filename : nice.py
    # encoding:utf8
    age=22
    name='Swaroop'
     
    print '%s is %d years old' % (name, age)
    print 'Why is %s playing with that python' % name
    

    ·使用字典(好吧,我表示写过几个不太成功的http post请求的脚本之后,知道什么是字典了。。。)

    # Filename : nice.py
    # encoding:utf8
    ab={'Swaroop':'swaroopch@byteofpyton.info',
            'Larry':'larry@wall.org',
            'Matsumoto':'matz@ruby-lang.org',
            'Spammer':'spammer@hotmail.com'
    }
    print "Swaroop's address is %s" % ab['Swaroop']
     
    ab['Guido']='guido@python.org'
    del ab['Spammer']
    print '
    There are %d contacts in the address-book
    ' % len(ab)
    for name, address in ab.items():
        print 'Contact %s at %s' % (name, address)
     
    if 'Guido' in ab:
        print "
    Guido's address is %s" % ab['Guido']
    

    ·所谓的“索引与切片”,我认为只是玩弄下标的小把戏(包括数组,列表和字符串) ·对象与参考

    # Filename : nice.py
    # encoding:utf8
    print 'Simple Assignment'
    shoplist=['apple','mango', 'carrot', 'banana']
    mylist=shoplist
     
    del shoplist[0]
     
    print 'shoplist is', shoplist
    print 'mylist is', mylist
     
    print 'Copy by making a full slice'
    mylist=shoplist[:]
    del mylist[0]
     
    print 'shoplist is', shoplist
    print 'mylist is', mylist
    

    直接用=赋值,那么两个对象指向同一个存在。(两者是同一事物) 如果使用[:](这应该叫做切片了吧),那么两者为不通的对象 ·几个扩展的字符串方法:

    # Filename : nice.py
    # encoding:utf8
    name ='Swaroop'
    if name.startswith('Swa'):
        print 'Yes, the string starts with "Swa"'
     
    if 'a' in name:
        print 'Yes, it contains the string "a"'
     
    if name.find('war') != -1:
        print 'Yes, it contains the string "war"'
     
    delimiter='_*_'
    mylist=['Brazil','Russia','India','China']
    print delimiter.join(mylist)
    

    【面向对象】 谈python的面向对象了。python就是这么强大。 self关键字: 类的方法区别于普通函数之处:第一个参数一定是self(也可以换为别的关键字但是不建议)。 这个self作用是,当类的一个实例对象调用类的方法的时候,self指的是这个对象本身。 {我认为在类的方法的参数列表中写self没有必要,使用约定俗成的this其实更好} ·类的创建:

    # Filename : nice.py
    # encoding:utf8
    class Person:
        def sayHi(self):
            print 'Hello, how are you?'
     
    p=Person()
    p.sayHi()
    

    ·__init__方法:其实就是constructor

    # Filename : nice.py
    # encoding:utf8
    class Person:
        def __init__(self,name):
            self.name=name
        def sayHi(self):
            print 'Hello, my name is', self.name
     
    p=Person("Chris")
    p.sayHi()
    

    ·__del__方法:类似于destructor (不过下面这个例子的运行结果让人很晕,明明没有调用__del__,但结果表明它偷偷的执行了)

    # Filename : nice.py
    # encoding:utf8
    class Person:
        '''Represents a person.'''
        population = 0
     
        def __init__(self,name):
            '''Initializes the preson's data.'''
            self.name = name
            print '(Initializing %s)'%self.name
     
            #When this person is created, he/she
            #adds to the population
            Person.population += 1
     
        def __del__(self):
            '''I am dying.'''
            print '%s says bye.'%self.name
            Person.population -= 1
     
            if Person.population == 0:
                print 'I am the last one.'
            else:
                print 'There are still %d people left.'%Person.population
     
        def sayHi(self):
            '''Greeting by the person.
     
            Really, that's all it does.'''
            print 'Hi, my name is %s.'%self.name
     
        def howMany(self):
            '''Prints the current population.'''
            if Person.population == 1:
                print 'I am the only person here.'
            else:
                print 'We have %d persons here.'%Person.population
     
    swaroop=Person('Swaroop')
    swaroop.sayHi()
    swaroop.howMany()
     
    kalam=Person('Abdul Kalam')
    kalam.sayHi()
    kalam.howMany()
     
    swaroop.sayHi()
    swaroop.howMany()
    

    ·类继承的一个例子:

    # Filename : nice.py
    # encoding:utf8
    class SchoolMember:
        '''Represents any school member.'''
        def __init__(self, name, age):
            self.name=name
            self.age=age
            print '(Initialized SchoolMember: %s)'%self.name
     
        def tell(self):
            '''Tell my details.'''
            print 'Name:"%s" Age:"%s"'%(self.name,self.age),
     
    class Teacher(SchoolMember):
        '''Represents a teacher.'''
        def __init__(self,name,age, salary):
            SchoolMember.__init__(self,name,age)
            self.salary=salary
            print '(Initialized Teacher: %s)'%self.name
     
        def tell(self):
            SchoolMember.tell(self)
            print 'Salary: "%d"'%self.salary
     
    class Student(SchoolMember):
        '''Represents a student.'''
        def __init__(self,name, age, marks):
            SchoolMember.__init__(self,name, age)
            self.marks=marks
            print '(Initialized Student: %s)'%self.name
     
        def tell(self):
            SchoolMember.tell(self)
            print 'Marks: "%d"'%self.marks
    t=Teacher('Mrs. Shrividya', 40, 30000)
    s=Student('Swaroop', 22, 75)
     
    print #输出一个空白行
     
    members=[t,s]
    for member in members:
        member.tell()
    

    【Python中的逗号】 在循环输出一行字符串的时候使用逗号结尾,可以避免多输出空的换行 ·python的文件操作: f=file('file_name',mode) f.write(str) f.close() f.readline() 一个例子:

    # Filename : nice.py
    # encoding:utf8
    poem='''
    Programming is fun
    When the work is done
    if you wanna make your work also fun
            use Python!
    '''
     
    f=file('poem.txt','w') #打开文件,写入形式
    f.write(poem)
    f.close()
     
    f=file('poem.txt')
    #如果没有指定模式,默认使用read模式
    while True:
        line=f.readline()
        if len(line)==0:#长度为0的行,意味着文件结束(EOF)
            break
        print line,
    f.close()
    

    ·异常处理 一个EOFError的例子:

    # Filename : nice.py
    # encoding:utf8
    import sys
     
    try:
        s=raw_input('Enter something --> ')
    except EOFError:
        print '
    Why did you do an EOF on me?'
        sys.exit()
    except:
        print '
    Some error/exception occurred.'
     
    print 'Done'
    

    ·列表综合 一个简洁的列表:

    # Filename : nice.py
    # encoding:utf8
     
    listone=[2,3,4]
    listtwo=[2*i for i in listone if i>2]
    print listtwo
    

    函数接受不定个数参数的时候,使用* eg:

    # Filename : nice.py
    # encoding:utf8
    def powersum(power, *args):
        '''Return the sum of each argument raised to specified power.'''
        total=0
        for i in args:
            total += pow(i, power)
        return total
    print powersum(2,3,4)
    print powersum(2,10)
    

    使用lambda

    # Filename : nice.py
    # encoding:utf8
    def make_repeater(n):
        return lambda s:s*n
     
    twice=make_repeater(2)
     
    print twice('word')
    print twice(5)
    

    exec:用来执行存储在字符串中的python表达式 eg:

    # Filename : nice.py
    # encoding:utf8
    eval('print "Hello world"')
    

    repr函数:用来取得对象的规范字符串表示。效果和反引号相同 eg

    i=[]
    i.append('item')
    print `i`
    print repr(i)
    

    有一道题目这样描述: “创建一个类来表示一个人的信息。使用字典储存每个人的对象,把他们的名字作为键。 使用cPickle模块永久地把这些对象储存在你的硬盘上。使用字典内建的方法添加、 删除和修改人员信息。 一旦你完成了这个程序,你就可以说是一个Python程序员了。” 在网上找过了,基本上功能好实现(例如http://iris.is-programmer.com/2011/5/16/addressbook.26781.html) 但我想知道保存到硬盘的data文件中的内容(用pickle存储的),在user选择modify的时候,是否能够修改?and what about delete? I' m confuse about it, and many code version doesn't deal with the data file well. Once I re-run the python file, the stored data is empty, because 他们不从data文件中read数据! About GUI in Python: There are several tools we can use. They are: PyQt: works well in Linux. Not free in windows PyGTK: works well in Linux. wxPython:windows下可以用。免费。 TkInter:据说IDLE就是这个开发的 TkInter是标准Python发行版的一部分。在Linux和Windows下都可以用

  • 相关阅读:
    C# 创建Excel或需不安装Office
    Spring学习之旅(八)Spring 基于AspectJ注解配置的AOP编程工作原理初探
    Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AOP编程比较
    开发Spring过程中几个常见异常(三):java.lang.ClassCastException: com.sun.proxy.$Proxy4 cannot be cast to com.edu.aop.ArithmeticCalculatorImpl at com.edu.aop.Main.main(Main.java:11)
    Spring学习之旅(六)Spring AOP工作原理初探
    开发Spring过程中几个常见异常(二):Exception encountered during context initialization
    Spring学习之旅(五)极速创建Spring AOP java工程项目
    Spring学习之旅(四)Spring工作原理再探
    Spring学习之旅(三)Spring工作原理初探
    Spring学习之旅(二)极速创建Spring框架java Web工程项目
  • 原文地址:https://www.cnblogs.com/zjutzz/p/3260293.html
Copyright © 2020-2023  润新知