定义函数参数和返回值的类型
# 老写法
def add(a, b):
"""
:param a: int
:param b: int
:return: int
"""
return a + b
# 新写法
# -> 返回值的数据类型
def add1(a: int, b: int = 3) -> int:
return a + b
print(add(2.5,3))
print(add("孤勇者","Eason"))
print(add1(2.5))
# 鼠标悬停时,pycharm会提示正确的数据类型,但可以正常执行
异常捕获
def calc(a: int, b: int):
result = round(a / b,2)
print(result)
while True:
try:
first = int(input("输入第一个数:"))
second = int(input("输入第二个数:"))
calc(first,second)
except ValueError:
print("请输入数字")
except ZeroDivisionError:
print("除数不能为0")
# 捕获未知异常
except Exception as res:
print(res)
else:
print("计算完毕")
匿名函数
语法:
lambda 参数: 表达式
# 定义简单的函数
乘法 = lambda x, y: x * y
print(乘法(5,4))
# 覆盖原函数的功能
def 除法(a,b):
return a/b
除法 = lambda x,y:round((x/y),1)
print(除法(10,3))
可变参数
def func1(*args):
for i in args:
print(i)
if __name__ == '__main__':
func1("Canals","Somebody","Rather Be")
"""【正常输出】
Canals
Somebody
Rather Be
"""
特殊属性
name
"""
__name__
标识模块的名字,显示一个模块的某功能是被自己执行还是被别的文件调用执行
假设模块A、B,模块A定义了功能C,模块B调用模块A,现在功能C被执行了:
如果C被A自己执行,模块执行了自己定义的功能,那么 __name__=='__main__'
如果C被B调用执行,当前模块调用执行了别的模块的功能,那么__name__=='A'(被调用模块的名字)
"""
file
"""
__file__表示显示文件当前的位置
如果当前文件包含在sys.path里面,那么__file__返回一个相对路径!
如果当前文件不包含在sys.path里面,那么__file__返回一个绝对路径!
"""
import os
print(os.path)
print(__file__)