主要参考Python 3 教程
Python3 基本数据类型 :
Python3 中有六种标准的数据类型:
项目 | 不可变 | 外层符号 | 可通过‘变量名[头下标:尾下标:步长]’截取 | 支持成员运算符(in ) |
---|---|---|---|---|
Number(数字) | Y(有点像Java的字符串) | |||
String(字符串) | Y | Y | Y | |
List(列表) | [ | Y | Y | |
Tuple(元组) | Y | ( 注:元组中只包含一个元素时,需要在元素后面添加逗号 ,否则括号会被当作运算符 | Y | Y |
Set(集合) | { | Y | ||
Dictionary(字典) | { |
数值运算:
rint( 2 / 4) # 除法,得到一个浮点数 0.5
print( 2 // 4) # 除法,得到一个整数 0
print( 2 ** 5) # 乘方
List(列表)中元素的类型可以不相同,它支持数字,字符串,甚至列表(即嵌套)。
用List翻转字符串 :
def reverseWords(input):
# 通过空格将字符串分隔符,把各个单词分隔为列表
inputWords = input.split(" ")
# 第一个参数 -1 表示最后一个元素
# 第三个参数为步长,-1 表示逆向
inputWords=inputWords[-1::-1]
# 重新组合字符串
output = ' '.join(inputWords)
return output
if __name__ == "__main__":
input = 'I like runoob'
rw = reverseWords(input)
print(rw)
元组(tuple)与列表(List)类似,不同之处在于元组的元素不能修改(‘tuple’ object does not support item assignment)。
Python3 运算符:
优先级:not>and>or
and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值;
or 也是从左到有计算表达式,若所有值均为假,则返回最后一个值,若存在真,返回第一个真值。
假值包括数字0、空字符串""、bool值False
注意这个例子:print(1 and 0 or not False) #=>True
Python3 字典:
字典的键必须不可变,所以可以用数字,字符串或元组充当,而用列表等就不行,e.g:
tinydict = {['Name']: 'Runoob', 'Age': 7}
会报错:TypeError: unhashable type: ‘list’
Python3 编程第一步:
复合赋值a, b = b, a+b
等价于:
n=b
m=a+b
a=n
b=m
复合赋值先计算右边表达式(从左到右),然后赋值给左边(从左到右)
Python3 循环语句:
循环语句可以有 else 子句,但它在循环被 break 终止时不执行。 e.g. :
count = 3
while count < 5:
print (count, " 小于 5")
count = count + 1
break
else:
print (count, " 大于或等于 5")
输出结果:3 小于 5
Python3 函数:
函数定义中,加了* 的参数会以元组(tuple)的形式导入; 加了 ** 的参数会以字典的形式导入
关于变量的作用域,可参考下方评论中的:
变变量的访问以 L(Local) –> E(Enclosing) –> G(Global) –>B(Built-in) 的规则查找
Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域。其它的代码块(如if/elif/else/、try/except、for/while等)不会引入新的作用域,也因此这些语句内定义的变量,外部也可以直接访问。
程序的变量并不是在哪个位置都可以访问的,访问的权限决定于这个变量是在哪个作用域中被赋值的。
函数的局部空间中存在了与全局空间同名的变量的话,函数中的局部变量就会遮盖全局变量,因此我们修改与全局变量同名的局部变量不会对全局变量产生任何影响,因为操作的根本就不是同一个变量。
另外一评论中的所谓“函数内可以访问全局变量,但不能更新(修改)其值!”是错误的,其例子:
a = 10
def sum ( n ) :
n += a
a = 11
print ('a = ', a, end = ' , ' )
print ( 'n = ', n )
sum(3)
会报错:UnboundLocalError: local variable ‘a’ referenced before assignment 。是因为a在sum函数中被赋值,所以此时a指向local variable。那么如果想在局部修改全局变量应该怎么办: e.g. :
a = 10
def sum ( n ) :
global a
n += a
a = 11
print ('a = ', a, end = ' , ' )
print ( 'n = ', n )
sum(3) # a = 11 , n = 13
print("out a", a) # out a 11
Python3 面向对象 :
类有一个名为 __init__()
的特殊方法(构造方法),该方法在类实例化时会自动调用
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self,类似于Java中的this指针。self.__class__
指向类
类的私有属性:两个下划线开头,声明该属性为私有,不能在类的外部直接访问,如 __private_attrs
类的私有方法:两个下划线开头,声明该方法为私有方法,不能在类的外部调用