python3-->基础操作
说明:教程参考:http://www.liaoxuefeng.com/
启动和运行
python3的运行方式有3种:
1、命令行进入python操作环境,然后以手工输入命令的方式执行,执行的结果会自动显示。
2、使用 命令"python fileName.py" ,主动调用.py文件,执行过程不会完全显示(比如执行“1 + 2”)。
3、在unix环境中,在.py文件头注释python命令路径,然后添加可执行权限,便可直接运行。
#!/usr/bin/python3
#和shell脚本开头注释一样
输入和输出
输出:
print("string")
1、与c/c++一致,依然可以使用格式化输出,但需要使用%给元素标记。
absNewName = abs print("new name value : %d" %(absNewName(-1))) #输出:new name value : 1
2、print可以使用单引号或双引号包括字符串(为了与c/c+一致,使用双引号),通用的转义字符依然可用(比如 '\n')。
3、可以使用多个双引号同时打印多段字符,通过逗号分隔,逗号最终被解释为空格。
4、print中未被引号包括的数,会自动进行数值运算。未被引号包括的字符,会解释为变量。
输入:
input("string")
name = input("please enter your name") print(name)
编码:
为了让python解释器按照utf-8编码读取字符串,需要在文件头加上:
# -*- coding: utf-8 -*-
当字符串数据在网络传输,或者存储在磁盘时,为了使传输的字节数尽量的少,需要将utf-8以字节的方式存储。
#使用b前缀,使字符串以字节为单位 x = b"ABC" #使用后缀 .decode('utf-8'),将从网络或磁盘上读取的字节流转换为 #utf-8格式 b"\xe4\xb8\xad\xe6\x96\x87".decode('utf-8') #使用len()函数计算字符串有多少字符 >>> len("中文") 2
语法
注释
与shell脚本一样,使用"#"注释
代码块
当语句以冒号结尾时,缩进的语句视为代码块。
# print absolute value of an integer: a = 100 if a >= 0: print(a) else: print(-a)
数据类型
整数 :任意大小的正负整数,以“0x”开头则表示16进制
浮点数 :表示方式与c/c++一样,比如"0.123","1.1e-10"
字符串 :以单引号或双引号包括的字符,支持中文输入。
#支持r ''string'' 格式,代表string中的内容不转义 print(r"abc \n def") #输出 abc \n def #可以用 ord函数反算对应的 unicode码 print("中对应的 Unicode:",ord('中'))
布尔值 :使用 "True"和"False"
#可以使用 and / or / not运行
print(True and False)
空值 :None
list
list类型是c/c++中数组与链表的一个结合体,具有如下特性。
#1、定义list,list中也可以嵌套list listName = ["a","b","c"] list2 = ["d",listName,"e"] #list中的数据类型也可以不同 list3 = [123,list2] #2、得到list的值 #用下标访问元素,下标为 “-1”时,代表最后一个元素, #为-2时代表倒数第二个元素,以此推类 print(list3[-1]) 输出:['d', ['a', 'b', 'c'], 'e'] #3、使用len()函数得到元素的个数 #4、使用append()方法添加元素到末尾 list3.append("f") #5、使用insert()方法插入元素到指定位置 list3.insert(1,"g") #6、使用pop()方法,删除指定位置元素 list3.pop(1)
tuple
tuple是list的固定形式,使用括号"()"定义,也就是说tuple初始化好以后就不能变了。
注意:
1、可以在tuple中引用list元素,这样list元素是可变的。tuple元素就类似于c/c++的 const指针,既指针指向的内容可变,但指针不变。
2、当定义只有一个元素的tuple时,需要添加一个逗号,不然会被解析为一个变量。
#tuple t = (1,) #变量 t= (1)
变量
python的变量为动态的,不需要指定变量类型。
#a是整数 a = 123 #a是字符串 a = "ABC"
运算符
需要特别说明除法,与c/c++不一样:
a / b 代表得出浮点值
a // b 代表只得整数
a % b 代表只得余数
条件判断
#注意冒号 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4>
循环
#将元素依次赋值给变量,并在循环体中运行 for <变量> in <元素>: <循环体> #当条件为真时,循环体执行 while <条件> : <循环体> #使用break可以退出循环 #使用continue可以跳过这次循环,开始下一次循环
dict
dictionary 的简称,通过{"名称",数值}的方式存放数据,可以快速的通过名称,查找到数值。
#使用大括号定义,"名称":数值方式赋值 d = {"a":1,"b":2} #取值使用方括号 print(d["a"]) #通过in判断"名称"是否有对应的数值,有则返回True,否则为False print("a" in d) #通过get()方法也可以判断"名称"是否有数值 d.get("a") #若有则返回True,否则无返回 d.get("a",-1) #若没有则返回-1 #使用pop()方法删除一组元素,对应的数值也删除 d.pop("a")
注意:dict中的元素,都必须是常量!
set
set可以看成数学意义上的无序和无重复元素的集合,若有重复元素,会自动被过滤。
#使用set(list)方式初始化 s = set([1,2,3,3,4]) #结果为 {1,2,3,4} #使用add()方法添加元素 s.add(5) #使用remove()方法删除元素 s.remove(4)
注意:set中的元素,都必须是常量!
函数
#通过将函数名赋值给变量的方法,等同于给函数取别名 a = abs a(-1)
自定义函数,使用如下格式
def <函数名> (<形参>) : <函数体> return <返回值> #若<函数体>为pass时,就是一个空函数 #返回值可以有多个,使用逗号隔开,实际上返回的是tuple类型 #形参中可以为其指定默认值,这样在调用函数时可以不用输入默认参数 #注意,默认参数需要指向常量 def power (x, n = 2): s = 1 while n > 0: n = n -1 s = s * x return s print(power(5))
可变参数的定义如下
#当在形参前面加入星号"*",表示一个可变参数,其内部自动组装为tuple def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum #当输入的参数是list或者tuple时,也可以在前面加"*",代表依次传入参数 nums = [1, 2, 3] calc(*nums)
关键字参数的定义如下:
#当在形参前面加入两个星号"**",便是关键字参数,其内部是dict #在内部可以只传入必选参数 def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw) #当外部是dict时,也可以在前面加"**",代表依次传入参数 extra = {'city': 'Beijing', 'job': 'Engineer'} person('Jack', 24, **extra) #可以用命令关键字参数来限制关键字参数的名字,需要分隔符 * def person(name, age, *, city, job): print(name, age, city, job) person('Jack', 24, city='Beijing', job='Engineer') #当函数定义中有了可变参数,则不需要分隔符 * person(name, age, *args, city, job): print(name, age, args, city, job)
注意:
1、参数的定义顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
2、对于任意参数,都可以通过func(*args, **kw)的形式调用
3、函数依然可以使用递归调用
高级特性
切片
切片操作可以从list或tuple中输出指定的一段数据,比如:
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] #打印从索引0开始,到3为止,但不包括索引3的元素 print(L[0:3]) #如果第一个索引是0,可以省略 print(L[:3]) #也可以支持倒数,此时0也可以省略 print(L[-2:0]) #也可以指定输出间隔,表示输出前10个数,每两个取一个 print(L[:10:2]) #所有元素,每2个取一个 print(L[::2])
列表生成式
用于快速简单生成list
#生成列表 1*1 、2*2、.......11*11, #注意表达式 x*x需要放在for前面,整个表达式需要方括号包围 d = [x * x for x in range(1,11)] #可以在for循环后面加入条件判断 #注意中间并没有冒号 d = [x * x for x in range(1,11) if x % 2 == 0] #可以使用两层循环 [m + n for m in 'ABC' for n in 'XYZ'] #输出:['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
生成器
列表生成式用于一次性产生一个完整的List,而生成器用于每次调用只往后产生一个结果。
#生成生成器 1*1 、2*2、.......11*11, #注意表达式 x*x需要放在for前面,整个表达式需要圆括号包围 d = (x * x for x in range(1,11)) #可以多次使用print(next(d)),不断输出结果 #也可以使用for循环迭代输出 for n in d: print(n) #也可以定义函数类的生成器,此时odd()函数返回的类型就是生成器, 每调用一次,函数在yield处返回,下次调用则在上次yield后继续执行 def odd(): print("step 1") yield 1 print("step 2") yield 3 print("step 3") yield 5 #比如: n = odd() print(next(n)) print(next(n)) print(next(n)) #输出: step 1 1 step 2 3 step 3 5
posted on 2016-09-29 12:02 KcMeterCEC 阅读(379) 评论(0) 编辑 收藏 举报