#!/usr/bin/env python3 def palindrome(s): return s == s[::-1] if __name__ == '__main__': s = input("Enter a string: ") if palindrome(s): print("Yay a palindrome") else: print("Oh no, not a palindrome")
局域或全局变量
我们通过两个例子来弄明白局域或全局变量。
1 2 3 4 5 6 7 8 9
#!/usr/bin/env python3 def change(): a = 90 print(a) a = 9 print("Before the function call ", a) print("inside change function", end=' ') change() print("After the function call ", a)
首先我们对 a 赋值 9,然后调用更改函数,这个函数里我们对 a 赋值 90,然后打印 a 的值。调用函数后我们再次打印 a 的值。当我们在函数里写 a = 90 时,它实际上创建了一个新的名为 a 的变量,这个变量只在函数里可用,并且会在函数完成时销毁。所以即使这两个变量的名字都相同,但事实上他们并不是同一个变量。
1 2 3 4 5 6 7 8 9 10
#!/usr/bin/env python3 def change(): global a a = 90 print(a) a = 9 print("Before the function call ", a) print("inside change function", end=' ') change() print("After the function call ", a)
这里通过关键字 global 来告诉 a 的定义是全局的,因此在函数内部更改了 a 的值,函数外 a 的值也实际上更改了。
默认参数值
函数的参数变量可以有默认值,也就是说如果我们对指定的参数变量没有给出任何值则会赋其默认值。
1 2 3 4 5
>>> def test(a , b=-99): ... if a > b: ... return True ... else: ... return False
在上面的例子里,我们在函数的参数列表写出 b = -99。这表示如果调用者未给出 b 的值,那么 b 的值默认为 -99。这是一个关于默认参数的非常简单的例子。
>>> def f(a, data=None): ... if data is None: ... data = [] ... data.append(a) ... return data ... >>> print(f(1)) [1] >>> print(f(2)) [2]
关键字参数
函数可以通过关键字参数的形式来调用,形如 keyword = value。如下:
1 2 3 4 5 6 7 8 9
>>> def func(a, b=5, c=10): ... print('a is', a, 'and b is', b, 'and c is', c) ... >>> func(12, 24) a is 12 and b is 24 and c is 10 >>> func(12, c = 24) a is 12 and b is 5 and c is 24 >>> func(b=12, c = 24, a = -1) a is -1 and b is 12 and c is 24
在上面的例子中你能看见调用函数时使用了变量名,比如 func(12,c = 24),这样我们将 24 赋给 c 且 b 具有默认值。