人生苦短,我用Pyton!
大家好,今天我们来学习理论篇的最后一课——变量和函数,下一节课就开始步入基础了。
变量
首先讲讲变量。变量就好比一个房子,里面住着一个值,这个值有很多类型,比如数字、字符串、列表、字典。
与一些语言(比如C)不同,Python是弱类型语言。强类型语言和弱类型语言的区别就在于:
强类型语言的变量类型是在变量定义之初就确定了的,不可更改了,而弱类型语言的变量类型可以修改。举几个栗子:
C:
int a = 1;
a = "1"; // 报错
JAVA:
int a = 1;
a = "1"; // 报错
JAVASCRIPT:
var a = 1;
a = "1"; // 正常
PYTHON:
a = 1
a = "1" // 正常
还有,Python的变量定义只需要使用name = value的格式就可以定义,不需要指定类型,也不需要加一个“var”。另一种定义方式是比如a = str('HelloWorld')
,此时打印a就会获得一个HelloWorld,其它类型一样。
函数
接下来讲讲函数。首先,函数就相当于几行的代码,你调用这个函数,就会执行这些代码。在Python中函数的定义为:
def function(arg):
# Do something
return
我们来分析一下这些代码:
首先,我们使用def
关键字定义了一个函数function
,这个函数接受一个参数arg
,定义完函数后用一个半角的冒号结束这行。
下一行用四个空格(不是一个tab)开始,第一行是一个注释,Python的注释用#
开头,井号后面的内容将会被编译器忽略,不执行,可以注释这行代码的作用。
最后一行是一个return
关键字,表示返回一个值,这里是返回一个空(None)如果用变量接收,将会是一个None
。如果不写这行代码,编译将会报错,因为这个函数里什么也没有(注释不算),如果你不想写return
,你可以用pass
来代替,也表示结束,但是不返回一个值(接收的话还是None)。
接下来我们具体讲一下函数:
首先,函数的调用可以是function(arg, kwarg=value)
,其中,function
是这个函数的名字,也就是定义时def
后面(
前面的那个名字,arg是一个变量,在函数外叫实参,而在函数内叫形参。kwarg是一个关键字参数,也就是具体指定某一个参数为什么值。如果这个函数有return
返回值,你可以用一个变量接收它,例如a = function()
。
最后,我们来一个小小的测试:
'''
Test 1
(我是一个多行注释(其实就是一个多行字符串))
'''
def test1(): # 定义一个函数test1,不接受任何参数
return 'HelloWorld' # 返回一个字符串'HelloWorld'
>>> test1('HelloWorld')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: test1() takes 0 positional arguments but 1 was given
(类型错误:test1()只需要0个参数但是给了1个)
>>> test1()
'HelloWorld'
(这里输出了返回值,因为这是在PythonShell中,如果在代码中则不会有任何输出)
>>> 1 = test1()
File "<stdin>", line 1
SyntaxError: can't assign to literal
(变量不能以数字开头!)'
>>> a = test1()
>>> print(a)
HelloWorld
(没有引号)
>>> a
'HelloWorld'
(有引号)
# Test 2
def test2(arg1, arg2, arg3=1, arg4=2): # arg3的默认值为1,arg4的默认值为2
# arg1 = 10
# 上面那行和这行都不会执行
return arg1 + arg2 + arg3 + arg4
>>> test2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: test2() missing 2 required positional arguments: 'arg1'
(类型错误:test2()缺少2个需要的参数:'arg1')
(arg3和arg4有默认值,可以不填,但是arg1和arg2必填)
>>> test2(1, 1, 1, 1)
4
>>> test2(1, 1, arg4=3)
6
(指定了arg4为3,arg3则为默认值1)
(关键字参数必须放在普通参数的后面,普通的参数则会按照顺序排列填入)
'''
Python的函数是不限定返回值的
你可以在一个函数里,用几个if语句,一个返回字符串,一个返回数字,这些都是可以的。
'''
好了,本期教程到这里就结束。。。等等,还有一件事要交代:
我们在写代码的时候一定要遵守一个规范,也要写一些注释,这样方便自己以后查看,也方便别人查看。如果是一个团队,互相之间约定好用什么格式,如果是个人,可以用PEP8规范,但是PEP8里也有一些不太适用的,比如单行的长度。总之,规范还是要有点的。
好了,这回真的结束了!!!
本文作者:寒枫岭
转载请注明原作者!