函数
在python中,函数的定义采用下面的风格
# 函数的定义
def 函数名(参数):
代码块
return 返回值
#函数的调用
函数名(参数)
例如定义一个从begin加到end的函数
def calSum(beg, end):
sum = 0
for i in range(beg, end):
sum += i
print(sum)
calSum(1, 100)
这里的beg和end是形参,1和100是实参
需要注意的是,由于python中是动态类型,因此我们不仅可以传整数,也可以传其他的类型,但是一定要注意不同类型之间的运算问题(字符串不能和数字相加)
在c++中,想要返回多个参数,可以通过输出型参数(指针/引用)来返回,而java中需要通过将多个参数整合为对象来返回,在python中,可以直接返回多个参数
def testReturn(a, b, c):
return a, b, c
a, b, c = testReturn(1, 2, 3)
_, _, c = testReturn(1, 2, 3)
如果其中的某个返回值不想接收,那么可以用下划线_来替代
并且,函数的参数可以设置默认值
def add(x, y, debug=False):
if debug:
print(f"x:{x} y:{y}")
return x + y
print(add(1, 2))
这样的话,如果我们不传输debug的值,就默认不打印x和y
需要注意的是,函数定义时,有默认值的参数需要放到没有默认值的后面
关键字参数
我们可以传递参数时按照形参的名字来传参
def test(x, y):
print(f"x: {x}")
print(f"y: {y}")
test(x=10, y=20)
变量的作用域
函数的变量作用域
在python中,定义在函数内部的变量出了函数后就失效了
如果在函数外部定义了变量x,在函数内部可以使用x,而如果在函数内部修改了x的值,例如外部定义x = 10,函数内部写x = 20,那么此时python会认为你创建了一个新的变量,而不会使用外部的x,在函数中使用x,会得到10,在函数外使用x,结果是20
这是因为python中定义一个变量和给这个变量重新命名的语句是相同的,如果我们想要使用外部的x,那么需要使用global这个关键字
其他语句的变量作用域
而如果在if,for,while中定义变量,出了其所在的代码块,还是可以访问到这个变量的,这点和java不同