函数
函数是带名字的代码块,用于完成具体的工作。函数就是为了简化工作,用于执行特定任务的代码序列
-
简单的函数
实例:
def greet_user(): #def是一个关键字,表明你要定义一个函数,这里的函数不需要任何信息就可以执行 """显示简单的问候语""" #这是文档字符串的注释,一般用于函数的文档 print("Hello!") #函数需要做得工作,就是打印这一行代码 #当我们执行代码块中的代码是,只需要: greet_user() #-->Hello!
-
传递参数
有时候,函数需要一些信息然后做一些工作,如果我们要传入信息,以便可以是函数处理时可以这么做:def greet_user(username): """显示简单的问候语""" print("Hello, "+username.title+"!") #这里并没有处理,直接就使得函数输出了 greet_user("jhon") #-->Hello, Jhon!
形参和实参:很多时候,我们会搞混这两个概念,现在我们看看这两个词,从字面意思来看。形参:有形无实,从代码来讲这就是一个没有赋值的变量,不代表任何一个数或字符等类型。实参有具体实意的变量,也就是被赋值过了,代表了一个类型,例如:i=5,这样i就是代表了5
因此,我们来看函数greet_user(username),函数名括号中username是突然出现的,在未使用毫无实际的意义,我们叫它形参,greet_user("jhon")这里"jhon"是一个字符串,带有数据类型,是一个有实际意义的参数,我们叫他实参,调用函数时,实参的值会被形参储存,在函数中形参就有了实参的值,可以直接对形参进行操作,进而改变实参,或者得到需要实参才能计算的到的数据。(形参改变了,实参不一定会改变,取决于它的类型,是列表时,形参变了实参也会变,但是是数字字符时,实参就不会变)
-
形参的各种形式
(1)多个形参函数可以传入多个实参,但是每次使用时必须有对应的实参 ```python
def greet_user(username,age,word):
"""显示简单的问候语""" print("Hello, "+username.title+"!") print("I'm "+age+" year old!") print(word) #这里并没有处理,直接就使得函数输出了 greet_user("jhon",18,"I'm fine") #-->Hello, Jhon! #-->I'm 18 year old! #-->I'm fine #"jhon"-储存->username字符串 #18-存储->age数字 #"I'm fine"-储存->word字符串
当形参的数量大于一个时,务必要注意你想传入的实参与其一一对应,否则会出现不可预知的问题
(2)关键字实参
def greet_user(username,age,word):
print("Hello, "+username.title+"!")
print("I'm "+age+" year old!")
print(word)
greet_user(username="jhon",word="I'm fine",age=18)
#-->Hello, Jhon!
#-->I'm 18 year old!
#-->I'm fine
见上面的代码,我们看见实参的位置并不与形参相对应,这就是关键字实参的好处了,关键字实参可以让你在调用时不用考虑形参的位置
(3)默认值
def greet_user(username,word,age=18):
print("Hello, "+username.title+"!")
print("I'm "+age+" year old!")
print(word)
greet_user(username="jhon",word="I'm fine")
#-->Hello, Jhon!
#-->I'm 18 year old!
#-->I'm fine
以上,发现在定义函数是多了一行age=18,直接就给这个形参赋值了,这样来说就可以不需要另外实参来赋值,当然我们也可以传入覆盖这个默认值
(4)等效函数调用
```python
def des_pet(pet_name,anim_type="dog"):
pass#一个没有实际意义的代码,用于测试
des_pet('willie')
des_pet(pet_name='willie')
des_pet('harry','hamster')
des_pet(pet_name="harry",anim_type="hamster")
des_pet(anim_type="hamster",pet_name="harry")
#以上对代码的调用都是可以的
```
-
返回值
函数在执行了代码序列之后,可以返回值,这个值可以是数字,字符,列表,元组,字典,能不能传函数有待测验,js可以def get_num(a,b): return a+b num=get_num(10,20) print(num) #-->30
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。