python适合用来做什么呢?
脚本,这些简短的程序自动执行常见的管理任务,如在系统中新增用户、上传文件到网站、不使用浏览器浏览网页等。
网站开发,作为快速创建动态网站的工具,Django、bottle、Zope等python项目深受开发人员欢迎。
文本处理,python在字符串和文本文件处理方面提供了强大的支持,包括正则表达式和unicode。
科学计算,网上有很多卓越的python科学计算库,提供了统计、数学计算和绘图的函数。
教育,鉴于python的简洁实用,学校可以将其作为第一门编程语言。
python支持加+、减-、乘*、除/四种基本运算,而且还使用**和%来分别表示乘方和求余。还有一个整除符号//,其结果总是整数。python还支持复数运算用1j表示-1的平方根。
python自带了很多编写好的代码,math模块就是其中之一。
导入模块有两种方式
#第一种更安全一些,建议使用第一种。
#如果使用第二种,函数与math中函数同名时,将被math模块中函数覆盖
import math from math import *
ceil(x)#大于或等于x的整数 cos(x)#x的余弦 degrees(x)#将x弧度转换为度数 exp(x)#e的x次方 factorial(x)#计算n的阶乘(n!) log(x)#以e为底的x的对数 log(x,b)#以b为底的x的对数 pow(x,y)#x的y次方 radian(x)#将x度转换为弧度数 sin(x)#x的正弦 sqrt(x)#x的平方根 tan(x)#x的正切
字符串的长度可以使用len()函数计算,字符串同样可以使用+和*来进行计算。
‘123’+’abcd’= ’123abcd’ ‘234’*3= ’234234234’ len(‘1234’)= 4
使用函数dir(m)可以列出模块m的所用函数,如果要查看内置函数可以使用dir(__builtins__),还可以使用help()函数查看函数的文档字符串,一般会有简易的英文说明。也可以打印函数的文档字符串。
#查看math模块的函数 import math dir(math) #查看所有的内置函数 dir(__builtins__) #查看字符创包含哪些函数 dir(‘’) #查看math模块的文档字符串 help(math) #打印tanh函数的文档字符串 print(math.tanh.__doc__)
类型转换是一种常见的因为,python提供了很多简化这种工作的内置函数,如str()、float()、int()、round()等等。
python命名变量规则,变量名的长度不受限制,但是第一个字符不能使数字必须是字母或下划线,区分大小写,不能将python关键字作为变量名。
对于x=expr这样的python赋值语句,可以解读为:让x指向表达式expr的值。expr可以是任何结果为值的python表达式。赋值语句并不会复制指向的值,而只是标记和重新标记既有值。数字和字符创是不可变的,看起来修改的情况下其实是python重新创建的新版本。对于没有任何变量指向的值,python会自动将其删除,一般而言python跟踪所有的值,并自动删除不在有指向的值,这称为垃圾回收。
python可以进行多重赋值,有一个很实用的用途就是交换两个变量的值。
x,y,z= 1,’qqq’,3.0 #会输出一个显示多个值的元组 x,y,z #交换a和b的值 a,b= b,a
python由3个主要部分组成,运行语句的解释器、将.py文件转换为.pyc文件的编译器以及运行.pyc文件的虚拟机。当你运行.py文件时,python会自动创建相应的.pyc文件,.pyc文件中包含目标代码。
如果想从键盘中读取数据,可以使用input()函数,我们常常使用标准输出(stdout)来表示文本被打印到的窗口。同样标准输入(stdin)是函数input从中读取字符串的地方。你有时还可以看到stderr它指的是显示错误消息的地方。print函数还可以使用sep修改它的间隔符。默认print打印完指定内容后会添加一个换行符\n,这个也可以通过end来进行修改。python2和python3的主要差别就是print函数,python2中print并非函数,导致修改默认分隔符合结束符比较困难。
#输出数据位a/b/c/d print(‘a’,’b’,’c’,’d’,sep= ‘/’) #指在同一行输出 print(‘jack123’,’4567’,end= ‘’)
python2和python3的另一个不同在意输入函数,python3中的input对应于python2的raw_input,而python2中的input函数可以对用户输入的字符串进行求值,但是python3中也可以使用eval(input(expr))进行模拟。
人们通常使用输入、处理、输出的组织方式进行编程,但是当程序越来越复杂的时候会导致代码混乱难以理解,所以我们一定要养成良好的习惯,使用注释指出输入、处理、输出部分。这有助于阐明程序执行的不同任务。
python里使用布尔逻辑进行决策,一共有4种逻辑运算符:not、and、or、==。同样python的and和or支持短路求值por q如果p为false将不再计算q,pand q如果p为true将不在计算q。
python有两种主要的循环:for循环和while循环。for循环通常比while循环更容易使用,但没有while循环灵活。for循环式读取文本文件各行的最简单方式。break和continue语句提供了跳出的方法。
#循环10次,并将每一次的循环变量i输出 #range函数有三个参数,第一个参数和第二个参数就是开始和结束,第三个参数就是步长。 for i in range(10): print(i) #while循环后面跟着循环条件 i= 0 while i < 10: print(i) i= i+1
函数是一大块可重用的代码,它是有名称的代码块,接受输入、提供输出并可存储在文件中供以后使用。python文档字符串通常使用三引号标识文档字符创的开始和结束位置,第一行是函数的简要描述接下来是详情和示例。python有一个很有用的工具doctest,可用于自动运行文档字符串中的示例代码。
import math def area(radius): “”” Return the area of a circle with the given radius. for example: >>>area(5.5) 95.033177771091246 “”” return math.pi*radius**2
除返回值外,函数以其他任何方式所做的修改都被称为副作用,打印到屏幕、写入文件和下载网页都属于副作用。有一种名为函数式编程的编程风格,其特征是几乎消除了副作用。在函数式编程中,你只能通过返回值来完成修改。
在函数外声明的变量称为全局变量,程序中的任何函数和代码都可读取它,要访问全局变量必须使用关键字global。
函数的参数,参数用于向函数传递数据,python支持多种参数,可以按引用传递,而且可以设置默认值,只有第一次调用函数时给默认参数赋值。带默认值参数不能位于没有默认值参数的前面。还可以使用关键之参数,使用关键值参数有两大好处,有助于提高程序的可读性,而且关键值的参数顺序无关紧要。
模块和普通python程序之间的唯一区别就是用途不同,模块是一个由函数组成的工具箱,用于编写其他程序,因此模块没有main函数。名称空间基本就是一组独特的变量名和函数名,要让模块中的名称在模块外面可见,你必须使用import语句。frommathimport*这种方式会把每一模块中所有的内容都加入当前的名称空间,将覆盖其他同名的内容,所以在较大的程序里不适宜使用这种导入模块语句。
字符串是一种聚合数据结构,python中字符串的索引从0开始,而且它还支持负数索引,其理念就是从右向左的方向,用负数表示字符串中的字符。还可以使用for语句来循环访问字符串。
str= ‘dengjingdong’ print(str[0]) print(str[-1]) #ord函数是将字符转换为整数 for i in str: total= total + ord(i)
转义字符,并非所有的字符都是可视的标准符号,例如换行和回车、制表符都是不可见的,虽然它们带来的效果是可见的,为了处理空白字符和不可打印的字符python使用一种特殊的表示方法。
\\反斜杠 \’单引号 \”双引号 \n换行符 \t水平制表符 \r回车
字符串切片,可使用切片从字符串中提取子串。要对字符串进行切片操作,可指定两个索引:要提取的第一个字符的索引和要取的最后一个字符的索引+1。如果要访问索引为i的字符串,可使用s[i]或者s[i:i+1]。我们还可以使用负数索引的切片。
food= ‘apple pie’ #s[begin:end]返回从索引begin到end-1的子串 food[0:5]#apple food[6:9]#pie food[:5]#apple food[6:]#pie food[-9:-4]#apple food[-3:0]#pie
有一个很实用的切片示例,这个函数返回的是文件的后缀名。
def get_ext(fname): dot= fname.rfind(‘.’) if dot == -1: return‘it’s a unormal filename’ else: returnfname[dot+1:] #rfind函数就是从右往左搜索字符
字符串测试函数
s.endswith(t) #s以字符串t结尾 s.startswith(t) #s以字符串t开头 s.isalnum() #s只包含字母和数字 s.isalpha() #s只包含字母 s.isdecimal() #s只包含表示十进制数字的字符 s.isdigit() #s只包含数字 s.isidentifier() #s是合法标识符 s.islower() #s只包含小写字符 s.isnumeric() #s只包含数字 s.isprintable() #s只包含可打印字符 s.isspace() #s只包含空白字符 s.istitle() #s是个大小写符合要求的字符串 s.isupper() #s只包含大写字母 t in s #s包含字符串t
字符串搜索函数
s.find(t) #如果没有找到子串则返回-1,否则返回t在s中的起始位置 s.rfind(t) #与find相同,但从右往左搜索 s.index(t) #与find相同,但如果在s中找不到t则引发ValueError异常 s.rindex(t) #与index相同,但从右向左搜索
函数index和find之间的差别在于没有找到指定子串时的情形。
一般而言index和find返回传入字符串第一次出现的起始位置索引,而rindex和rfind返回的是传入字符串最后一次出现的起始位置索引。
改变大小写的函数
s.capitalize() #将s[0]改写为大写 s.lower() #让s的所有字母都小写 s.upper() #让s的所有字母都大写 s.swapcase() #将小写字母改为大写,大写变小写 s.title() #让s的大小写符合头衔的要求
设置字符串格式的函数
s.center(n,ch) #包含n个字符的字符串,其中s位于中央,两边用字符ch填充 s.ljust(n,ch) #包含n个字符的字符串,其中s位于左边,右边用字符ch填充 s.rjust(n,ch) #包含n个字符的字符串,其中s位于右边,左边用字符ch填充 s.format(vars) #设置字符串 ‘{0}likes {1}’ .format(‘jack’,’ice cream’) #输出’jacklikes ice cream’ ‘{who}{pet} has fleas’ .format(pet = ‘dog’,who = ‘my’)#输出’mydog has fleas’
字符串剥除函数
s.strip(ch) #从s的开头和结尾删除所有包含在字符串ch的字符 s.lstrip(ch) #从s的开头删除所有包含在字符串ch的字符 s.rstrip(ch) #从s的结尾删除所有包含在字符串ch的字符
字符串拆分函数
s.partition(t) #将s拆分为三个字符串head、t、tail(head+t+tail=s) s.rpartition(t) #与partition相同,但从s的右端开始搜索t s.split(t) #以t为分隔符,将s划分成一系列的子串 s.rsplit(t) #与split相同,但从s的右端开始搜索t s.splitlines(t) #返回一个由s中各行组成的列表
字符串替换函数
s.replace(old,new) #将s中的每个old替换为new s.expandtabs(n) #将s中的每个制表符替换n个空格
其他字符串函数
s.count(t) #t在s中出现的次数 s.encode() #设置s的编码 s.join(seq) #使用s将seq中的字符串连接成一个字符串 s.maketrans(table) #创建一个转换表,用于将old中的字符改为new中相应的字符 s.zfill(width) #在s左端添加足够多的0,让字符串的长度为width s.translate(table) #使用指定转换表(使用maketrans创建的)对s中字符进行替换
正则表达式
xy? x、xy x|y x、y x* ‘’、x、xx、xxx、xxxx等 x+ x、xx、xxx、xxxx等
原文:http://blog.csdn.net/djd1234567/article/details/45583863