【笔记】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 '\nI 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 '\nThere are %d contacts in the address-book\n' % len(ab)
- for name, address in ab.items():
- print 'Contact %s at %s' % (name, address)
- if 'Guido' in ab:
- print "\nGuido'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 '\nWhy did you do an EOF on me?'
- sys.exit()
- except:
- print '\nSome 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下都可以用
【笔记】Python简明教程的更多相关文章
- 《Python简明教程》总结
Python经典教程<Python简明教程> 目录: 为什么Python 安装Python 体验Python Python数据类型 运算符与表达式 控制流 函数 模块 数据结构 解决问题 ...
- python中global的用法——再读python简明教程
今天看了知乎@萧井陌的编程入门指南,想重温一下 <python简明教程>,对global的用法一直不太熟练,在此熟练一下,并实践一下python中list.tuple.set作为参数的区别 ...
- python简明教程
Python简明教程 MachinePlay关注 0.7072018.09.26 01:49:43字数 2,805阅读 9,287 Python一小时快速入门 1.Python简介 pylogo. ...
- Python 简明教程 --- 3,Python 基础概念
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 控制复杂性是计算机编程的本质. -- Brian Kernighan 了解了如何编写第一个Pytho ...
- Python 简明教程 --- 2,第一个Python 程序
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那你肯定是用错方法了. -- Carig Zerouni 当你在自己的电脑上 ...
- Python 简明教程 --- 1,搭建Python 环境
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 人生苦短,我用Python. -- 龟叔T恤 Python 是一门解释型语言,所以要想运行Pytho ...
- Python 简明教程 --- 18,Python 面向对象
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码能借用就借用. -- Tom Duff 目录 编程可分为面向过程编程和面向对象编程,它们是两种不 ...
- Python 简明教程 --- 13,Python 集合
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了. -- Norm Schryer 目录 前几节我们已经介绍 ...
- Python 简明教程 --- 14,Python 数据结构进阶
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了. -- Carig Zerouni 目录 前几节我们介 ...
随机推荐
- C中有关引用和指针的异同
参考于https://blog.csdn.net/wtzdedaima/article/details/78377201 C语言也学了蛮久的,其实一直都没有用到过或者碰到过引用的例子.前端时间再全面复 ...
- python学习(23)requests库爬取猫眼电影排行信息
本文介绍如何结合前面讲解的基本知识,采用requests,正则表达式,cookies结合起来,做一次实战,抓取猫眼电影排名信息. 用requests写一个基本的爬虫 排行信息大致如下图 网址链接为ht ...
- .Net并行编程系列之三:创建带时间限制(Timeout)的异步任务并取得异步任务的结果
尝试创建基于MVVM三层架构的异步任务: 场景:View层触发ViewModel层的动作请求,ViewModel层异步的从Model层查询数据,当数据返回或者请求超时时正确更新ViewModel层数据 ...
- string 中的一些优化事项
1.1 fmt vs "+" (无转义) import ( "testing" "fmt" ) var ( str = "he ...
- python2(中文编码问题):UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1
python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't deco ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Total Diamonds
https://www.codechef.com/DEC17/problems/VK18 #include<cstdio> #include<iostream> #includ ...
- vscode nodejs智能提示功能
1.依赖一些第三方的插件,先安装typings这个包,如果使用的是淘宝镜像,输入cnpm.cmd执行: cnpm i typings -g //cnpm install typings -global ...
- [转载]8 种提升 ASP.NET Web API 性能的方法
http://www.oschina.net/translate/8-ways-improve-asp-net-web-api-performance 英文原文:8 ways to improve A ...
- 希尔密码(Hill Cipher)的实现
原理应该不用多讲了,自己百度就可以. C++实现: #include <iostream> #include <string> #include <memory.h> ...
- 解析html和采集网页的神兵利器
HtmlAgilityPack是一个基于.Net的.第三方免费开源的微型类库,主要用于在服务器端解析html文档(在B/S结构的程序中客户端可以用Javascript解析html).截止到本文发表时, ...