python学习
标签(空格分隔): python 编程语言 初学者
python中的函数
形式:
def 函数名(参数表):
(4个空格)
return **expression**
python按照空格来区分函数体
模块
模块的概念类似与C/C++中库的概念。想要用其他模块中的函数,首先要载入其他的模块。
import语句
import语句用来载入函数,常见用法有:
import 模块名,表示载入模块
import 模块名 as 别名 表示载入模块同时命名别名,一般用以防止对象重名
from 模块名 import 引入对象
用以精确引入指定的对象,而且这样之后就不用在每次调用时标明所属的模块。但是这样子在重名的时候会有危险。
from 模块名
PS:python只会在模块首次引入时进行加载,它会跟踪所有加载过的模块来防止重复加载。
使用main
python在所有的模块中都定义了一个叫做name的特殊变量,如果是在主程序调用的话,name=main。如果是在模块中加载的话,name的值就是模块的名称
因此模块能够明白自己是不是主程序
这个功能的用途主要在于提供帮助信息上:如果有人试图引用某个模块作为一个库时,就可以通过命令行了解到该模块的帮助信息
文档字符串(docstring)
在函数名下面一行,以“`开头并结尾的一段字符串
def to_celsius(t):
```Convert Fahrenheit to Celsius.```
return round((t-32)*5/9)
这样子对模块调用help会得到更有用的结果。
文档字符串:如果文件或函数的第一样东西是个字符串,且该字符串没有赋值给任何变量,则python就会将其保存起来以便help函数使用。
图像处理
python3中图像处理使用pillow
数据结构
列表
python的列表是异构的,意为列表中可以有不同类型的数据。同时列表类似于数组,可以通过[]来随机访问。
列表是可变的,不像C++中的字符串,对于随机访问的对象可以进行修改。
列表的常用函数
len(L)返回列表L中的元素数量
max(L)返回列表中的最大值
min(L)返回列表中的最小值
sum(L)返回列表中所有值的和
列表的方法
!所有方法都只是修改原列表而不创建新的列表
L.append(v)将值v添加到列表L中
L.insert(i,v)将值v插入到列表L的索引i处,同时将其后的元素往后移
L.remove(v)从列表L中移除第一次找到的值v
L.reverse()将列表L中的值反转
L.sort()对于列表L中的值以升序排序
L.pop()移除并返回里诶包L中的最后一个元素
用于列表的for语句
for variable in list:
block
例如
velocities=[0.0,9.81,19.62,29.43]
for v in velocities:
print v
#这样子就能狗输出列表中所有的数字
切片
list[i:j]是从索引i到j的子列表(前闭后开区间),i和j可以缺省。j如果大于列表实际长度默认打印到列表尾
别名机制
两个列表可以建立别名关系,如test=list
,这样test就是list的别名,任何对于test的操作都会作用到list上
函数的列表参数也是别名的一种
列表推导式
每个列表推导式都在for之后跟一个表达式,然后有零到多个for或if子句,返回结果是一个根据表达从其后的for和if上下文环境中生成出来的列表
如3*x for x in vec
就是从列表vec中生成一个3倍大小的子列表
元组
元组由若干个逗号分割的值组成
t=(123,321,'abc')
元组与列表的重要区别在于元组不可修改。
集合
集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素
空集合:set()
集合操作
检测成员: element in set
集合间的操作 - 交集| 并集& 异或^
字典
由{}中的键值对构成的序列称作字典,如tel={'jack':4098,'sape':4139}
构造函数dict()直接从键值对元组列表中构建字典
字符串
在python钟声明一个值是字符串的方法是:在它的两边加上单引号或双引号
函数str()可以将其他类型的变量转换为字符串,同理,int()、float()可以将其他类型转换为整型/浮点型
当字符串中有单引号时,字符串应该用双引号包括。反之亦然。
多行字符串
通过输入三个“`,可以将字符串扩展到多行
如
```one
two
three'''
print函数
print函数会将字符串中的转义字符打印出来(PS:python2中print是语句,但python3中print作为函数调用)
格式化输出
字符串中加占位符,后面%(变量)
rabbits=17
cage=10
print "%.3f rabbits are in cage #%d " % (rabbits, cage)
input函数
使用input函数可以在shell中进行输入
常见的字符串方法
capitalize()返回字符串的首字母大写副本
find(s)返回字符串中首次出现参数s的索引,如果字符串中没有参数s则返回-1
find(s,beg)返回字符串中索引beg之后首次出现参数s的索引,如果字符串中索引beg之后没有参数s则返回-1
find(s,beg,end)在字符串中搜索beg到end部分
islower()测试所有字符是否均为小写
isupper()测试所有字符是否均为大写
lower()将所有字符转换为小写并返回
replace(old,new)将字符串中所有子串为old替换为new并返回
split()将空格分割的单词以列表的形式返回
split(del)将del分割的子串以列表形式返回
strip()删除字符串两端的空白符并返回
strip(s)删除字符串两端的s并返回
upper()将所以的字符转换为大写模式并返回
把文件看作列表
open(文件名,模式名)
模式有三种”r”读取,”w”写入,”a”追加
open返回文件对象,对文件对象调用read方法可以读取内部的数据(read可以接受一个正整数作为参数,表示多少个字符)
readline方法功能为读取文件中的下一行文本
命令行参数
命令行参数被存于一个名为argv的特殊变量中(来自系统模块sys)
注释
注释以#开始
注意注释的内容,方便下次维护
python中的选择语句
python中的布尔运算符只有三种:and or not
if语句
if condition:
block
elif condition:#意味else if
block
else:
else-block
python中的循环语句
for循环
for variable in list:
block
函数range(a,b)作用为生成a到b的一个数字列表(前闭后开),如果只有一个参数则默认是从0开始
range(x,y,step)中的第三个参数step是步长
内置函数enumerate()
功能是对于给定的一个序列(列表、元组或字符串),enumerate()将会返回一个由值对(pair)组成的列表。该列表中的第一个元素为索引,第二个则是原序列在该索引处的值。
PS:python允许多值赋值。如果赋值语句的左侧有多个变量,且右侧有相同数量的值,则python会对它们进行配对
values=[1,2,3]
for (i,v) in enumerate(values):
values[i]=2*v
while循环
while condition:
block
break与continue语句
作用:与其他语言相同,跳出循环/继续循环
文件处理
本地文件
本地文件可以用open()函数打开,得到一个文件指针,通过文件指针的read方法或是直接将其看作字符串列表看待可以提取里面的信息
input_file=open("in.txt","r")
for line in input_file:
line=line.strip()
print(line)
input_flie.close()
互联网上的文件
使用模块urllib可以读取指定网站上的文件
PS:python3与python2的使用不同
#python3
import urllib.request
url="http://www.baidu.com"
web_page=urllib.request.urlopen(url)
for line in web_page:
line=line.strip()
print(line)
web_page(close)
使用sys模块中的函数可以改变文件名
import sys
def process_file(filename):
input_file=open(filename,"r")
for line in input_file:
line=line.strip()
print(line)
input_file.close()
if __name__=="__main__"
process_file(sys.argv[1])