设为首页 收藏本站
查看: 972|回复: 0

[经验分享] 读《Python学习笔记》,整理关键知识点,以备用

[复制链接]

尚未签到

发表于 2017-5-6 07:17:08 | 显示全部楼层 |阅读模式
  读《Python学习笔记》,整理关键知识点,以备用
《Python学习笔记》--c 2003-2003。皮大庆,在此对作者表示敬意。
自己用了一天的时间,看完了这本98页的笔记指南, 自己也做了下笔记,以备自己以后的查阅。
  1、解释型语言:是边读源程序边执行。
而编译型语言则是将源代码编译成目标代码后执行。以后在执行时就不需要编译了
2、变量名和关键字
程序中的变量名要有实际意义。变量名可以是由数字和字符组成的任
意长度的字符串,但必须以字母开头。python是区分大小写的
  
python定义了28个关键字:
and continue else for import not raise
assert def except from in or return
break del exec global is pass try
class elif finally if lambda print while
  3、运算符和操作数
  一个星号代表的是乘法,两个星号代表的是乘幂
>>> 3 * 4
12
>>> 3 ** 4
81
>>> (1 + 3) ** 2
16
>>> 3 * 3 ** 2
27
  4、数学函数模块-math
>>> import math
>>> print math.log10(10)
1.0
>>> print math.sin(1.5)
0.997494986604
>>> print math.pi
3.14159265359
>>> print math.e
2.71828182846
>>> math.exp(9) #e的9次幂。
8103.0839275753842
>>> math.pow(3,4) #3的4次幂。
81.0
>>> math.sqrt(3.44) #3.44开平方。
1.8547236990991407
>>> math.sin(math.pi/2) #正弦函数。
1.0
>>> math.cos(math.pi * 3.4) #余弦函数。
-0.30901699437494784
>>> math.fabs(-34.90) #求绝对值。
34.899999999999999
  5、
lambda函数
Python允许你定义一种单行的小函数。定义lambda函数的形式如下:
labmda 参数:表达式
lambda函数默认返回表达式的值。你也可以将其赋值给一个变量。
lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一
个:
>>> g = lambda x, y: x*y
>>> g(3,4)
12
  6、键盘输入
>>> name = raw_input("Please input your name:")
Please input your name:pidaqing
>>> print name
pidaqing
  7、用for语句遍历字符串
  def travel(string):
index = 0
while index < len(string):
letter = string[index]
print letter
index = index + 1
《==》
>>> for char in address:
print char
  8、字符串模块string
>>> bookname = "new concept english"
>>> import string
>>> index = string.find(bookname, "s")
>>> print index
17
  寻找字符串中的子串开始的位置:
>>> string.find("www.qswtp.com", "com")
10
在上面的例子中再加一个参数,表明从哪开始搜寻子串:
>>> string.find("I love Python!", 'o', 5)
11
>>> string.find("I love Python!", 'o', 1)
3
确定寻找字符串的索引范围:
>>> string.find("compaq", 'c', 1, 3)
-1
>>> string.find("compaq", 'p', 1, 3)
-1
如果找不到,就返回-1。
  常量string.lowercase包含了所有小写的英文字母;常量string.uppercase包
含了所有大写的英文字母;常量string.digits包含了从0到9的数字。
>>> import string
>>> print string.lowercase
abcdefghijklmnopqrstuvwxyz
>>> print string.uppercase
ABCDEFGHIJKLMNOPQRSTUVWXYZ
>>> print string.digits
0123456789
  9、判断字符是否为小写的函数:
import string
def isLower(char):
return string.find(string.lowercase, char) != -1
我们还可以利用in操作符编写这个函数。in操作符判断一个字符是否
存在于字符串中:
import string
def isLower(char):
return char in string.lowercase
最后一种选择方案是利用比较操作符:
import string
def isLower(char):
return 'a' <= char <= 'z'
  10、列表的一些方法
append在列表的尾部追加元素,参数是插入元素的值:
>>> number = [0, 1, 2, 3]
>>> number.append(4)
>>> print number
[0, 1, 2, 3, 4]
方法insert在列表中插入元素,它有两个参数,一个是索引位置,一个
是插入元素的值:
>>> number.insert(3, 5)
>>> print number
[0, 1, 2, 5, 3, 4]
方法extend合并两个列表为一个:
>>> nation1 = ["French", "German"]
>>> nation2 = ["Chinese", "Korean"]
>>> nation1.extend(nation2)
>>> print nation1
['French', 'German', 'Chinese', 'Korean']
>>> print nation2
['Chinese', 'Korean']
所谓合并就是将一个列表的元素添加的另一个列表中。
方法index取得元素的索引值:
>>> cars = ["Ford", "Fiat", "Volvo"]
>>> cars.index("Ford")
0
方法remove从列表中删除第一次出现的值:
>>> color = ["red", "green", "yellow", "green", "black"]
>>> color.remove("green")
>>> print color
['red', 'yellow', 'green', 'black']
方法pop删除最后一个值,然后返回这个值:
>>> letter = ['a', 'b', 'c', 'd']
>>> letter.pop()
'd'
>>> print letter
['a', 'b', 'c']
  11、
列表元素是可变的
和字符串不一样,列表的元素是可更改的,这意味着我们可以修改、添加
或删除列表的元素值。
>>> fruit = ["banana", "apple", "quince"]
>>> fruit[0] = "pear"
>>> fruit[-1] = "orange"
>>> print fruit
['pear','apple','orange']
>>> list = ['a','b','c','d','e','f']
>>> list[1:3] = ['x','y']
>>> print list
['a','x','y','d','e','f']
也可以通过给元素赋空值,删除一些元素:
>>> list=['a','b','c','d','e','f']
>>> list[1:3]=[]
>>> print list
['a','d','e','f']
或是利用列表片断,在特定的位置插入元素。
>>> list = ['a','d','f']
>>> list[1:] = ['b','c']
>>> print list
['a','b','c','d','f']
>>> list[4:4] = ['e']
>>> print list
['a','b','c','d','e','f']
Python提供了关键字del删除列表中的元素。
>>> a=['one', 'two', 'three']
>>> del a[1]
>>> a
['one','three']
关键字del可以处理负数索引。如果索引超出范围,就会产生运行时错
误。也可以用片断作为关键字del的索引:
>>> list = ['a', 'b', 'c', 'd', 'e', 'f']
>>> del list[1:5]
>>> print list
['a','f']
  12、字符串和列表
  下面我们来介绍两个与字符串和列表相关的函数。一个是将字符串分
割成单词列表。空格默认的是单词的边界。
>>> import string
>>> song = "The rain in Spain..."
>>> string.split(song)
['The', 'rain', 'in', 'Spain...']
split函数的另外一个参数是规定作为分隔符的字符串。分隔符不显示
在列表中。
>>> string.split(song, 'ai')
['The r', 'n in Sp', 'n...']
函数jion的功能和split正好相反,它是将列表连接成字符串。默认的分
隔符是空格。
>>> list = ['The', 'rain', 'in', 'Spain...']
>>> string.join(list)
'The rain in Spain...'
当然也可以像split那样指定分隔符。
>>> string.join(list, '_')
'The_rain_in_Spain...'
  13、列表映射
假设有这样包含字符串的列表,要将其中的每个元素的末尾加一字符
‘s’。我们会想到如下的办法:
>>> fruit = ['apple', 'orange', 'pear', 'banana']
>>> i = 0
>>> for var in fruit:
fruit = var + 's'
i = i + 1
>>> print fruit
['apples', 'oranges', 'pears', 'bananas']
如果用列表映射,只用一行语句就能解决问题:
>>> [fruit + 's' for fruit in fruit]
['apples', 'oranges', 'pears', 'bananas']
当for语句每次循环时,把一个元素赋值给变量fruit,然后这个变量再和字
符‘s’相加,最后把列表fruit的值全部更新。
上述列表映射对所有元素做了相同的的操作,如果我们只想对满足条
件的元素进行处理该怎么办呢?很简单,只要在加上if语句就行了。假如
不想对字符个数等于六的元素加‘s’,那么可用下列方法过滤列表:
>>> [fruit + 's' for fruit in fruit if len(fruit) != 6]
['apples', 'pears']
可见该操作将元素“orange”和“banana”忽略,因为他们不满足字符个
数不等于六的条件。
  14、序列赋值
在编程中,我们可能要交换两个变量的值。用传统的方法,需要一个
临时的中间变量。例如:
>>> temp = a
>>> a = b
>>> b = temp
Python用序列轻松的解决了这个问题:
>>> a = 1
>>> b = 2
>>> c = 3
>>> a, b, c = c, b, a
>>> print a, b, c
3 2 1
  15、随机函数
>>> import random
>>> for i in range(10):
x = random.random()
print x
  16、别名和拷贝
字典是可变的。如果你想修改字典,并且保留原来的备份,就要用到
字典的copy方法。看下面的例子:
>>> opposites = {'up': 'down', 'right': 'wrong', \
'true': 'false'}
>>> alias = opposites
>>> copy = opposites.copy()
alias和opposites指向同一个值。而copy则指向全新的拷贝。如果修改alias,opposites也
发生变化。
>>> alias['right'] = 'left'
>>> opposites['right']
'left'
但是如果修改copy,opposites不变。
>>> copy['right'] = 'privilege'
>>> opposites['right']
'left'
  17、计算字符串  计算字符串中字母出现的次数
我们曾写过一个函数,目的是计算字符串中字母出现的次数。而字典提
供了一个很好的方法,来统计字母出现的次数。
>>> letterCounts = {}
>>> for letter in "Mississippi":
letterCounts[letter] = letterCounts.get (letter, 0) + 1
>>> print letterCounts
{'i': 4, 'p': 2, 's': 4, 'M': 1}
Python有两个函数items和sort能够更好的完成这一功能。
letterItem = letterCounts.items()
print letterItem
[('i', 4), ('p', 2), ('s', 4), ('M', 1)]
letterItem.sort()
print letterItem
[('M', 1), ('i', 4), ('p', 2), ('s', 4)]
  18、
拷贝文件函数,一次读写五十个字符。第一个参数是源文
件名,第二个参数是新文件名。
def copyFile(oldFile, newFile):
f1 = open(oldFile, "r")
f2 = open(newFile, "w")
while 1:
text = f1.read(50)
if text == "":
break
f2.write(text)
f1.close()
f2.close()
return
  19、\\\\\\\\
从上述的内容可以看到,为了将不同类型的数据保存到文件,必须将
其转换成字符串。结果导致从文件中读的一切内容都是字符串,数据的原
始类型信息丢失了。解决的办法是输入pickle模块,用它提供的方法把各种
类型的数据存入文件,数据结构的信息也同样被保存了。也就是说,你保
存了什么,将来读出的还是什么。例如:
>>> import pickle
>>> f = open("test.dat", "w")
>>> pickle.dump(100, f)
>>> pickle.dump(123.98, f)
>>> pickle.dump((1, 3, "abc"), f)
>>> pickle.dump([4, 5, 7], f)
>>> f.close()
在这个例子中,我们用dump方法分别向文件中写入了整数、浮点数、列表
和数组。如果你用write方法写入,那是会出错的。
接下来就看能不能把这些数据“原封不动”的读出来:
>>> f = open("test.dat", "r")
>>> a = pickle.load(f)
>>> print a
100
>>> type(a)
<type 'int'>
>>> b = pickle.load(f)
>>> print b
123.98
>>> type(b)
<type 'float'>
  20\\\\\\\\\\\\\\
  下面这个函数求从数head开始,到tail为
尾,步长为step的所有数之和。
83
我爱Python!
def total(head, tail, step):
temp = 0
while head<=tail:
temp = temp + head
head = head + step
return temp
它有三个参数,调用函数时,三个参数
  21、一个复杂的例子
while 1:
try:
x = int(raw_input("Input a number:"))
y = int(raw_input("Input a number:"))
z = x / y
except ValueError, ev:
print "That is no valid number.", ev
except ZeroDivisionError, ez:
print "divisor is zero:", ez
except:print "Unexpected error."
raise
else:
print "There is no error."
print x , "/" , y , "=" , x/y
在这个例子中有三个except语句。一个try语句可以和多个except配合使
用,但只可能是其中的一个被执行。
前两个except语句,接受两个参数。第一个参数是异常的类型,第二
个参数用于接收异常发生时生成的值,异常是否有这个参数及参数的类型
如何,由异常的类型决定。
异常“ValueError”在这里表示:如果你输入的字符串包含非数字类
型的字符,这个异常将被引发。异常“ZeroDivisionError”表示除数为0引
发的异常。
最后一个except语句表示当有异常发生,但不是前面定义的两种类
型,就执行这条语句。用这样的except 语句要小心,理由是你很可能把
一个应该注意的的程序错误隐藏了。为了防止这种情况的发生,我们用
了raise语句,将异常抛出。
当没有任何异常发生时,else语句的内容被执行。else语句一定放在所
有except语句的后面。
  22、继承
面向对象程序语言的一个重要特点是继承。继承提供了在已存在类的
基础上创建新类的方法。继承的子类拥有被继承的父类的所有方法,在此
基础上,子类还可以添加自己的专有方法。
定义一个父类
class Person:
def __init__(self,
name = None,
age = 1,
sex = "men"):
self.name = name
self.age = age
self.sex = sex
def displayInfo(self):
print "name : %-20s" % self.name
print "age : %-20d" % self.age
print "sex : %-20s" % self.sex
这个Person类有三个属性,方法displayInfo用于打印这三个属性。
接着定义了继承Person的student类:
class Student(Person):
def __init__(self,
name = None,
age = 1,
sex = "men",
grade = 0):
Person.__init__(self, name, age, sex)
self.grade = grade
def displayInfo(self):
Person.displayInfo(self)
print "grade : %-20d" % self.grade
Student类中的init 方法中调用了父类的init 方法,同时加了一条打印
给grade属性赋值的语句。Student类中重定义了父类displayInfo方法,它的
内部也调用了父类的displayInfo方法。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373553-1-1.html 上篇帖子: python中ctypes模块应用中文帮助文档 下篇帖子: 每个程序员都应该学习使用Python或Ruby 转载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表