: jank : : 3797 : 2016-08-24 18:01 python
一.语法部分
1.学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。
注:缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
例:
a=1 b=2 if(a < b): print "jank"; else: #elif代表elseif print "占魁";
2.Python语句中一般以新行作为为语句的结束符。
但是我们可以使用斜杠( )将一行的语句分为多行显示,如下所示:
例:
total = a + b + c print total;
3.Python 引号
Python 接收单引号(' ),双引号(" ),三引号(''' """) 来表示字符串,引号的开始与结束必须的相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释"
python 中多行注释使用三个单引号(''')或三个双引号(""")。'
4.同一行显示多条语句加';'号
5.Python空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。
二.变量类型
1.python中的变量赋值不需要声明
如:
a=1; b=1.23; c='jank';
python不仅可以同时为多个变量赋一个值,还可以为多个变量同时赋不同的值
如:
a=b=c=1; a,b,c=1,2,3;
2.python中的标准赋值类型
Numbers(数字):int(整形),long(长整形),float(浮点型),complex(复数)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
3.python中的字符串中的字符选取
例:
str = 'Hello World!' print str # 输出完整字符串 print str[0] # 输出字符串中的第一个字符 print str[2:5] # 输出字符串中第三个至第五个之间的字符串 print str[2:] # 输出从第三个字符开始的字符串 print str * 2 # 输出字符串两次 print str + "TEST" # 输出连接的字符串
4.python列表list
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
列表用[ ]标识。
例:
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print list # 输出完整列表 print list[0] # 输出列表的第一个元素 print list[1:3] # 输出第二个至第三个的元素 print list[2:] # 输出从第三个开始至列表末尾的所有元素 print tinylist * 2 # 输出列表两次 print list + tinylist # 打印组合的列表
删除列表元素
list1 = ['physics', 'chemistry', 1997, 2000]; del list1[2];
5.python元组
元组是另一个数据类型,类似于List(列表)。
元组用"()"标识。内部元素用逗号隔开。但是'元组不能二次赋值,相当于只读列表'。
例:
tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john') print tuple # 输出完整元组 print tuple[0] # 输出元组的第一个元素 print tuple[1:3] # 输出第二个至第三个的元素 print tuple[2:] # 输出从第三个开始至列表末尾的所有元素 print tinytuple * 2 # 输出元组两次 print tuple + tinytuple # 打印组合的元组
6.python元字典 元字典是python中除列表外最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
例:
dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'john','code':6734, 'dept': 'sales'} print dict['one'] # 输出键为'one' 的值 print dict[2] # 输出键为 2 的值 print tinydict # 输出完整的字典 print tinydict.keys() # 输出所有键 print tinydict.values() # 输出所有值
三.运算符
1.算数运算符:
+加 - 两个对象相加a + b 输出结果 30
-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -10
*乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 200
/除 - x除以yb / a 输出结果 2
%取模 - 返回除法的余数b % a 输出结果 0
**幂 - 返回x的y次幂a**b 为10的20次方, 输出结果 100000000000000000000
//取整除 - 返回商的整数部分9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
2.比较运算符:
==等于 - 比较对象是否相等(a == b) 返回 False。
!=不等于 - 比较两个对象是否不相等(a != b) 返回 true.
<>不等于 - 比较两个对象是否不相等(a <> b) 返回 true。这个运算符类似 != 。
>大于 - 返回x是否大于y(a > b) 返回 False。
<小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。(a < b) 返回 true。
>=大于等于- 返回x是否大于等于y。(a >= b) 返回 False。
<=小于等于 -返回x是否小于等于y。(a <= b) 返回 true。
由上可见:python算数运算符和比较运算符跟php几乎没什么区别。
3.赋值运算符
=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
'//='取整除赋值运算符'c //= a' 等效于 'c = c // a'
4.逻辑运算符
and x and y布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。(a and b) 返回 20。
or x or y布尔"或"- 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。
not not x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False
5.身份运算符
isis是判断两个标识符是不是引用自一个对象x is y, 如果 id(x) 等于 id(y) , is 返回结果 1
is notis not是判断两个标识符是不是引用自不同对象x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1
例:
a = 20 b = 20 if ( a is b ): print "a 和 b 有相同的标识" else: print "a 和 b 没有相同的标识"
输出结果为:a 和 b 有相同的标识
5.成员运算符
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
例:
a = 1 b = 6 list = [1, 2, 3, 4, 5 ]; if ( a in list ): print "变量 a 在给定的列表 list 中" elif( b not in list): print "变量 b 不在给定的列表 list 中"
四.循环语句
1.循环类型
while 循环在给定的判断条件为 true 时执行循环体,否则退出循环体。
for 循环重复执行语句
嵌套循环你可以在while循环体中嵌套for循环
例:
num = 0; while(num < 9): print '当期数值为:' , num; num += 1;
while 循环 '还支持else语句,这是php所不允许的'
nun = 0; while(num < 10): print '当前数值为:' , num; else print '当前数值已超出循环范围';
for 循环
//字符串
for string in 'python': print '当前字母:', string;
//列表
names = ['jank', 'jack', 'jackson', 'jason']; for name in names: print '当前的名字:', name
//序列索引迭代
fruits = ['banana', 'apple', 'mango'] for index in range(len(fruits)): print '当前水果 :', fruits[index]
//for循环也支持else
for num in range(3,9): print '当前数字:', num; else: num += 1; print num, ' 加数字';
循环嵌套
i = 2 while(i < 100): j = 2 while(j <= (i/j)): if not(i%j): break j = j + 1 if (j > i/j) : print i, " 是素数" i = i + 1
2.循环控制语句
break 语句在语句块执行过程中终止循环,并且跳出整个循环
continue 语句在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
pass 语句pass是空语句,是为了保持程序结构的完整性。
五.日期和时间
1.获取当前时间戳:
import time; # 引入time模块 ticks = time.time() print "当前时间戳为:", ticks
2.获取当前时间:
import time; localtime = time.localtime(time.time()) print "本地时间为 :", localtime
打印结果:time.struct_time(tm_year=2016, tm_mon=8, tm_mday=23, tm_hour=18, tm_min=25, tm_sec=34, tm_wday=1, tm_yday=236, tm_isdst=0)
3.获取当前带格式时间:
import time localtime = time.asctime(time.localtime(time.time())) print "当前时间为 :", localtime 打印结果:Tue Aug 23 18:28:03 2016
4.格式化时间:使用 time 模块的 strftime 方法来格式化日期
# 格式化成2016-03-20 11:45:39形式
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 格式化成Sat Mar 28 22:24:24 2016形式
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
# 将格式字符串转换为时间戳
a = "Sat Mar 28 22:24:24 2016" print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
5.获取日历
import calendar cal = calendar.month(2016, 1) print "以下输出2016年1月份的日历:" print cal;
六.函数
1.定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
例:
def functionname( parameters ): "函数_文档字符串" function_suite return [expression]
2.实例
以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。
def printme( str ): "打印传入的字符串到标准显示设备上" print str return
3.函数调用
def printme( str ): "打印任何传入的字符串" print str; return;
# 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");
4.不定长函数
所谓不定长函数,就是为了解决使用超过当初设定的参数问题
例:
def jank(arr, *vartuple): print '输出:', arr; for val in vartuple: print '数字:', val; jank(1,2,3,4);
打印结果:
输出:1
数字:2
数字:3
数字:4
注:默认先输出上面的一个,后面的参数走循环
七.匿名函数
python 使用 lambda 来创建匿名函数。
例:
sum = lambda arg1, arg2: arg1 + arg2;
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )
八.模块
模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。
模块的概念有点类似php中的类。
1.import文件名(相当于require_once,且不需要加后缀名)
使用方法为:文件名.函数名/类名
例:
import jank
jank.add_name('jank');
2.From…import 语句Python的from语句让你从模块中导入一个指定的部分到当前命名空间中。
例:
# -*- coding: UTF-8 -*- from python import add_name add_name('艾占魁','男', '23','江西省,上饶市,余干县','17777793319');
3.From…import* 语句把一个模块的所有内容全都导入到当前的命名空间也是可行的,但不该过多的使用
例:
from python import *
4.定位模块
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
当前目录
如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
如果都找不到,Python会察看默认路径。
模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决 定的默认目录
5.PYTHONPATH变量
作为环境变量,PYTHONPATH由装在一个列表里的许多目录组成。PYTHONPATH的语法和shell变量PATH的一样。
在Windows系统,典型的PYTHONPATH如下:
set PYTHONPATH=c:python20lib;
在UNIX系统,典型的PYTHONPATH如下:
set PYTHONPATH=/usr/local/lib/python
6.dir()函数
dir()函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
7.globals()和locals()函数
根据调用地方的不同,globals()和locals()函数可被用来返回全局和局部命名空间里的名字。
如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名。
如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字。
两个函数的返回类型都是字典。所以名字们能用keys()函数摘取。
8.reload()函数
当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。
因此,如果你想重新执行模块里顶层部分的代码,可以用reload()函数。该函数会重新导入之前导入过的模块。
例:
reload(module_name)
九.文件I/O
1.打印输出结果:print
2.读取键盘输入:input(), raw_input()
例:str = raw_input('请输入')
print '请输出', str
注:input()和raw_input(),基本类似,但是input()可以输入一个表达式,并输出一个结果
3.打开和关闭文件
open()函数
file object = open(file_name , access_mode, buffering)
各个参数的细节如下:
file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
file.closed返回true如果文件已被关闭,否则返回false。
file.mode返回被打开文件的访问模式。
file.name返回文件的名称。
file.softspace如果用print输出后,必须跟一个空格符,则返回false。否则返回true。
例:
# 打开一个文件
fo = open("python.py", "wb")
print "文件名: ", fo.name
print "是否已关闭 : ", fo.closed
print "访问模式 : ", fo.mode
print "末尾是否强制加空格 : ", fo.softspace
close()方法
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
write()方法
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符(' '):
4.文件定位
tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
例:
# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10);
print "读取的字符串是 : ", str
# 查找当前位置
position = fo.tell();
print "当前文件位置 : ", position
5.重命名
rename()方法需要两个参数,当前的文件名和新文件名。
语法:
import os
os.rename(current_file_name, new_file_name)
6.删除文件
remove()方法删除文件,需要提供要删除的文件名作为参数。
语法:
import os
os.remove(file_name)
7.创建目录
例:
import os
os.mkdir('jank');
8.chdir()方法
可以用chdir()方法来改变当前的目录。
例:
import os
# 将当前目录改为"/home/newdir"
os.chdir("/home/newdir")
9.显示当前目录
getcwd()方法显示当前的工作目录。
例:
import os
print os.getcwd();
10.删除目录
例:
rmdir()方法删除目录,目录名称以参数传递。