Python学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习笔记相关的知识,希望对你有一定的参考价值。

 


Python学习笔记

比较好的一个博客
http://www.cnblogs.com/BeginMan/p/3192695.html

前言:

从2016/05/15开始学习Python了,目标是两个半月做到基本入门掌握,然后开始深入学习爬虫等数据分析技术,目标实现对个人中转发的微博的视频通过Python来实现自动下载。

Python通过缩进来实现代码分块,本文中所有均使用的是tab键来缩进

不同的缩进模块之间最好用空格分隔开,保证代码的可读性

零、一些小东西

1. print ‘test‘ 会默认打印换行,如果不想换行可以在语句后添加个英文逗号来消除换行。 print ‘test‘,

2.python语句可以添加分号作为结束符号,也可以不添加使用,但是在一行写多条语句时必须添加。不建议使用分号。

3.行首的缩进是必须的,有相同缩进的语句称为一个块。不能使用tab和空格的混合缩进,可能会导致跨平台有问题,后续所有的缩进均为tab键

一、基本简介

 
对象,变量,标识符,运算符,运算优先级等

1.1.数

在python中有4种类型的书:整数(int)、长整数(long)、浮点数(float)、复数

1.2. 单引号,双引号,三引号

单引号和双引号应用方式完全一样,保留 字符串中的空格和tab键

三引号: ‘’‘ ’‘’   “”“  ”“” ,在三引号中可以随意引用单引号和双引号。比如两个人的对话就可以用三引号
 

1.3.转义符

对一些特殊字符进行转义表示

在行末的一个单独的反斜杠转义字符不是表示转义,而是表示字符串在下一行继续,而不是一个新的行。

在使用了圆括号、方括号或者花括号时,会自动将前后一对括号之间的代码认为是一个逻辑行,此时换行不需要反斜杠
例如:
“This is the first sentence.\\
This is the second sentence." 
表示的是一个字符串
 
 

1.4自然字符串

如果要表示一些不是转义处理的一些特殊的字符串,需要在字符串前面添加前缀 r或者R来表示。
例如:
r"Newlines are indicated by \\n"   # #   \\n在引用打印过程中不会被转义使用为换行
 

1.5 Unicode 字符串

Unicode 是书写国际文本的标准方法。
如果要输出其他语言的字符串需要在字符串前面添加前缀u或者U
例如: u"This is an Unicode string"
 

1.6字符串连接

直接吧两个字符串放在一起就行了,可以在字符串中间添加逗号输出空格
"The first  string","The second strting"
 

1.7基本运算

**  幂,返x的y次幂 x**y
//   整除 4//3.0 结果为1.0
% 取模
<<  左移  3<<2  结果为12
>>  右移 11>>1 结果为5   ## 1011 > 101
 
建议使用圆括号来完成不同优先级的运算符的连接。

~ 按位翻转  x的按位翻转是-(x+1)

 


二、表达式,流程控制

 
在任何编程中流程控制是比不可少的,常用的流程控制有if-else ,while , for语句
 

2.1 If-else 语句

格式:
if  True:
code
elif True:
code
else:
done
#!/usr/bin/python
str1 = 1
if str1 == 2 :
	print "it is true"
else:
	print " it is false"
 
if语句在逻辑行的结尾处需要添加一个英文冒号,表示后面跟的是一个要执行的语句块,elif和else是可选项,如果选择了也需要在逻辑行结尾处添加冒号表示后续跟的是一个要执行的语句块。
注意if , elif , else语句后的冒号和代码的缩进
 

2.2 while 语句

 
格式
run = True
while  run:
if 
code
run = False
else:
code
print "while loop is done"
#!/usr/bin/python
# filname : while.py
num = 1 
while num <= 5:
	print "number is : ",num
	if num == 3:
		print "num is equal 3"
	else:
		print "num is not equal 3"
	num = num + 1
print "the while loop is done"


while语句有个可选的else语句,且如果有个else语句则在判断为false时执行。如果有else则一定会执行,除非一直执行while循环。
利用break语句可以直接退出循环而不必执行else语句。
 

2.3 for 循环

格式:for i in range()
利用内建range函数生成序列如range(0,6)生成序列0-6
也可以使用枚举序列[0,1,2,4]。如果是连续的则等价于range(m,n)
range(m,n,q)表示从m到n每次步长q
 
#!/usr/bin/python
#filename : for.py
for i in range(0,6):
        print i
for j in [0,1,2,4]:
        print j
for m in range(0,7,2):
        print m


 

2.4 break语句和continue语句

 
和其他编程语言中一致,break直接退出循环,continue完成本次循环,继续下次循环。
 
 

三、函数 function

 

3.1定义函数:关键字 def

 
def func():              #when define a function in python ,there is a comma after function name
code
 
func()   #call the function,调用函数,括弧中可以定义一些参量,用于后续传递参数。
#!/usr/bin/python
# Filename: func_local.py
def func(y):
        global x
        print ‘x is : ‘, x
        x = 2
        print ‘Changed local x to‘, x
x = 50
del func
func(x)
print ‘x is still‘, x
print dir()
 
Q1:函数调用过程中传递给形参的是值还是参数的地址?
A1:   

3.2局部变量

函数内定义的变量,和外部的同名变量没有关系,所有变量的作用域是它所在的代码块
#!/usr/bin/python
# Filename: func_local.py
def func(x):
print ‘x is‘, x
x = 2
print ‘Changed local x to‘, x
x = 50
func(x)
print ‘x is still‘, x
执行结果为
x is 50
Changed local x to 2
x is still 50
 
 
3.3全局变量
 
使用global定义全局变量
使用同一个global语句指定多个全局变量。例如global x, y, z。

3.4默认参数值

参数在函数定义的圆括号对内指定,用逗号分割。
但函数定义了默认参数值时,如果调用函数时,对参数不进行赋值的话则采用默认参数值,且带有默认值的参数必须在后面声明,如
可以声明 def func(x,y=5)但是不能声明def func(x=5,y)。参数是以位置来传递的,后者调用过程中y是没有值的,则会报错。
 
#!/usr/bin/python
def func(x,y=5)
area = x * y
print ‘area is : ‘, area
func(2)
func(3,8)
 
则func(3)输出结果为15
func(3,8)输出结果为24
 

3.5 关键参数

 
如果某个函数有许多参数,可以在调用参数过程中,使用形参的名称来指定对应的参数的值,这样不用考虑参数的顺序,同时也遵循默认参数值的赋值规则,调用逻辑比较清楚。
如:
#!/urs/bin/python
#filename : func_key.py
def func(a,b=5,c=10)
    print ‘a is ‘,a , ‘b is ‘,b , ‘c is‘ , c 
func (3,7)
func (a=10,b=109)
func(c=100,a=12,b=23)


3.6 return 语句

return在函数执行完成之后返回一个值,如果没有return语句,则每个函数默认隐含一个return None语句,None表示Python中没有任何值的特殊类型。//应该类似于NULL
pass语句在Python中表示一个空的语句

3.7 DocStrings

docstrtings 叫做文档字符串,是一个重要的工具,作为程序的一个说明文档。
格式如下:
在函数的第一个逻辑行的字符串是这个函数的文档字符串,同样适用于模块和类,文档字符串的惯例是一个多行字符串(‘‘‘‘‘‘‘或者"""""""),它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。在函数中使用文档字符串时要遵循这个惯例。
在函数中help(func_name)即可调用函数的__doc__(双下划线)。
#!/usr/bin/python
# Filename: func_doc.py
def printMax(x, y):
‘‘‘Prints the maximum of two numbers.
The two values must be integers.‘‘‘
x = int(x) # convert to integers, if possible
y = int(y)
if x > y:
print x, ‘is maximum‘
else:
print y, ‘is maximum‘
printMax(3, 5)
print printMax.__doc__
help(printMax.__doc__

四、模块

4.1模块简介

模块即包含自定义的所有变量和函数的文件,以.py结束。
每一个.py文件称为一个module,module之间可以互相导入
即库函数,导入之后,可以在其他模块中使用该模块中定义的变量。
使用英文点号来调用,
模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。实际的角度,模块往往对应Python程序文件。
每个文件都是一个模块,并且模块导入其他模块之后就可以使用导入模块定义的变量名。模块可以由两个语句和一个重要的内置函数进行处理。
import: 使客户端(导入者)以一个整体获取一个模块。###导入模块时,不带模块的后缀名,比如.py,确定下导入的规则。
import放在程序前面,且按照Python标准库模块、Python第三方模块、自定义模块的顺序从上到下排开。
from:容许客户端从一个模块文件中获取特定的变量名。
from sys import argv  
导入模块中指定属性
 #从sys模块中导入argv相关参数,使用 from xx import xx中可以在脚本中使用该参数名称调用该参数,而不需要在前面加上模块名称,通过点号来调用,但一般要避免这种情况,容易变量冲突。
模块导入的特征:
 
from sys import *        #导入sys模块中所有的参数,
reload:在不中止Python程序的情况下,提供了一个重新载入模块文件代码的方法

4.2 .pyc文件

 
一篇比较详细的介绍python .pyc文件的博客,博主也有其他python相关的博客,可以参考下:
http://blog.163.com/[email protected]/blog/static/52600902200812862955306/
 
pyc 是由py文件经过编译后二进制文件,py文件变成pyc文件后,在其他python脚本中加载该模块的速度有所提高,而且pyc是一种跨平台的字节码,是由python 的虚 拟机来执行的。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同。
 
如何将py脚本编译为pyc文件,方法如下:

用内置模块py_compile编译即可,完成后再文件目录下生成同名的.pyc文件,linux下使用file file名称可以看到文件属性为python编译的文件
>>>import py_compile

>>>py_compile.compile("file")

4.3 dir()函数

使用dir()函数来列出模块中定义的标识符的名称,标识符有函数,变量和类

如dir(sys)列出sys模块中的标识符名称。不带参数的空函数dir()列出当前模块的标识符名称。比如在模块中使用 print dir()即可打印出模块中的标识符。

4.4 列表

python中使用del来删除变量/名称/函数。

列表 list_test = [‘apple‘,‘mango‘,‘carrot‘]

list_test.append(‘rice‘)给列表中添加值

list_test.sort() 给列表排序

len(list_test)获取列表长度
 
del list_test[0]删除列表第一项
 

4.5 元组

 
元组和列表十分类似,元组是不可变的,无法修改。元组通过圆括号中的用逗号分隔的项目定义
 
tuple_test = (‘wolf‘,‘elephant‘,‘monkey‘)
new_tuple_test = (‘penguin‘,tuple_test)
print tuple_test[0]  # wolf
print new_tuple_test[1][2]   #monkey  ,通过索引进行访问
 
 

4.6 print语法

 
#!/usr/bin/python
age = 15
name = ‘python‘   #   when single quote mark is need during create variables????
print ‘%s is a good programming  language , it has %d years ’%(name,age)
print ‘%s is a good programming language‘%name    #NOTICE : no comma before %name
print ‘%s is a good programming language‘%(name)
 
 

4.7 字典

字典是dict类的实例/对象
字典中有两个概念:键, 值。
必须使用不可变的对象(字符串)作为字典的键,字典的值无要求
键值对: dic =  {‘key1‘:‘value1‘,‘key2‘:‘value2‘,‘key3‘:‘value3‘} 键值对用冒号分隔,各个队用逗号分隔,所有的键值对放在花括号中,键值对是无序的。需要使用单引号。
#!/usr/bin/python
#filename : using_dict.py
#b = {key1:value1,key2:value2}
#abc= {‘key3‘:‘value3‘,‘key4‘:‘value4‘}
#print "key1‘s value is %s"%ab[key1]
#print "key3‘s value is %s"%abc[‘key3‘] 
ab = {‘Swaroop‘:‘[email protected]‘,
        ‘Larry‘:‘[email protected]‘,
        ‘Matsumoto‘:‘[email protected]‘,
        ‘Spammer‘:‘[email protected]‘
        }

print "Swaroop‘s address is %s"%ab["Swaroop"]

ab["Guido"] = "[email protected]"
del ab["Spammer"]

print "\\nThere are %d contacts in the address-book\\n"%len(ab)
<strong>for name,address in ab.items():                          #调用了键值对的items方法,返回键值对2元组(键和值)</strong>
<strong style="font-size: 14.4px; font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">		</span><span></span></strong><pre name="code" class="python" style="font-size: 14.4px; display: inline !important;">print "Contact%s at %s"%(name,address)<span style="white-space:pre">		</span>
<span></span><pre name="code" class="python" style="font-size: 14.4px; display: inline !important;"><span style="font-size: 14.4px; font-family: Arial, Helvetica, sans-serif;">#分别赋值给name和address<span>	</span></span>


if "Guido" in ab:
        print"\\nGuido‘s addressis %s"%ab["Guido"]


4.8序列

列表、元组和字符串都是序列,
主要特定是:索引操作符和切片操作符。
 

4.9引用

注意两种方式的不同结果
#!/usr/bin/python
#filename :reference.py
shoplist = ["apple","mango","carrot","banana"]
mylist = shoplist
print "shoplist is :",shoplist
print "mylist is :",mylist
#shoplist is : [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]
#mylist is : [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]

del shoplist[0]
print "shoplist is :",shoplist
print "mylist is :",mylist
#shoplist is : [‘mango‘, ‘carrot‘, ‘banana‘]
#mylist is : [‘mango‘, ‘carrot‘, ‘banana‘]

print "copy by making a full slice"
mylist = shoplist[:]
del mylist[0]
print "shoplist is :",shoplist
print "mylist is :",mylist
#shoplist is : [‘mango‘, ‘carrot‘, ‘banana‘]
#mylist is : [‘carrot‘, ‘banana‘]


第五章python项目(备份文件)
 
 
 
 第六章 面向对象编程
 
 
 
第七章、输入/输出
 
常用的输入/输出类型是处理文件。创建、读和写文件的能力是许多程序所必需的。
 
通过file类的对象来创建一个文件,使用file类的read,readline和write方法来对文件进行读写,使用close方法结束操作关闭文件。
 
技术分享
#!/usr/bin/python
# Filename :using_file.py

poem = """Programming is fun
Whhen 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")
while True:
    line = f.readline()
    if len(line) == 0:
        break
    print line,
f.close()
View Code

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

以上是关于Python学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Python 3学习笔记

python 机器学习有用的代码片段

python爬虫学习笔记-M3U8流视频数据爬虫

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

python基础学习笔记(十三)

Python学习笔记之正则表达式