书写规范
Python书写采用PEP8代码规范,日常编码时可以多注意,让自己逐渐习惯规范代码书写
键盘输入
Python标准输入函数input()允许用户用键盘输入一串字符串,如果想要对键入的值进行计算需要利用适当函数进行字符串到值的转换
- int(x) 将x转换为一个整数。
- float(x) 将x转换到一个浮点数。
- complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
- complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
连续赋值
在Python中,赋值操作可以在一个等号左右重复进行,运算过程是先计算等号右边的数值,然后依次赋值给左边的变量。
例如
a = 1; b = 2
可以写作
a, b = 1, 2
下列计算
a = 0; b = 1
a, b = b, a+b
相当于
n = a+b
a = b
b = n
函数参数
Python函数中参数传递可使用关键字传递参数的方式,在此方式下参数传递可以不考虑顺序问题
def printinfo( name, age ):
"打印任何传入的字符串"
print ("名字: ", name)
print ("年龄: ", age)
return
#调用printinfo函数
printinfo( age=50, name="runoob" )
结果如下
名字: runoob
年龄: 50
函数参数传递
Python中,参数传递类似于C++中的传参,若函数传入参数类型是List等可变类型,函数内部对于参数的任何改动都会影响参数本身包含的数据改变;相对的,如果传入参数的类型是int,或者是可变参数中的某个具体数值类型等,则函数内部的改动不会影响外部对象的数据
例如
def ChangeInt( a ):
a = 3
b = 1
ChangeInt(b)
print( b )
输出为1
def ChangeList( a ):
a[0] = 3
b = [1, 2, 3]
ChangeList(b)
print( b )
输出为3,2,3
def ChangeList( a ):
a = 3
b = [1, 2, 3]
ChangeList(b[0])
print( b )
输出为1,2,3
***注意:***下列情况结果不变
def ChangeList( a ):
a = [3, 2, 3]
b = [1, 2, 3]
ChangeList(b)
print( b )
原因:函数传入List对象的本质是让形参,实参两个成员同时指向同一个List对象。 此例中当函数执行时,相当于让a重新指向了一个新的List对象,此时作为实参的b仍然指向原来的List,因此不会产生任何变化
不定长参数
Python函数传参过程中,如果出现参数数目未知的情况,可以采取如下两种方式
构造元组
构造函数过程中,形参前面添加一个*,该形参将以元组的形式储存传入的参数,实参数量>=0
下列示例中后两个参数以元组的形式被形参存储
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vartuple)
# 调用printinfo 函数
printinfo( 70, 60, 50 )
输出:
70
(60, 50)
如果传入参数为空亦可,打印出的形参为"()"
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vartuple)
return
# 调用printinfo 函数
printinfo( 10 )
输出:
10
()
构造字典
形参前面添加两个*,该形参将以字典的形式储存传入的参数
def printinfo( arg1, **vardict ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vardict)
# 调用printinfo 函数
printinfo(1, a=2,b=3)
输出:
1
{'a': 2, 'b': 3}
***注意:***字典和元组作为不定长参数的时候,实参传入的形式不一样
文件操作相关
判断文件结尾
- 判断空输入
dicFile = open(FilePath,'r')
while True:
line = dicFile.readline()
if not line:
break
dicFile.close()
- 抛出异常
try:
dicFile = open(FilePath,'r')
while True:
line = dicFile.readline()
dicFile.close()
except EOFError:
pass