Python函数的基本使用

函数的定义和调用

定义

格式:

1
2
def 函数名():
代码

调用

函数名()

函数参数

  • 定义时小括号中的参数,用来接收参数用的,称为 “形参”
  • 调用时小括号中的参数,用来传递给函数用的,称为 “实参”

定义:
def 函数名称(普通函数,收集参数(*args),关键字参数,关键字收集参数(**kwargs)):

语句块

注意:

  • 1、普通参数、关键字参数可以有n个,对量没有具体要求,收集参数和关键字收集参数要么没有,要么有且只有一个。

  • 2、收集参数语法是*args,args可以换成其他名字也行,但推荐使用args来定义收集参数,关键字收集参数也是如此,这个python的约定俗称。

  • 3、函数中参数的顺序是:普通函数、收集函数、关键字函数、关键字收集参数,其顺序不能颠倒,只要颠倒就会报错。

函数调用:

  • 函数名称(普通参数,收集参数,关键字参数,关键字收集参数)

  • 注意:函数调用时,里面的收集参数、关键字参数、关键字收集参数可以不给值就能调用,但是如果函数有普通参数,调用时必须给普通参数赋值,不然就会报错。

文档注释

1
2
3
4
5
# 函数第一行写一个字符串作为函数文档
def test(a, b):
"求和1"
print(a+b)
help(test)

def get_info(name: str, age: int):
“””
接收用户的名字和年龄,拼接一个字符串并返回

:param name: 接收一个名字
:param age: 接收用户的年龄,必须是 0-200 间的一个整数
:return: 返回拼接好的字符串
"""
return "我的名字叫 %s,今年是 %d 岁" % (name, age)

get_info(“吴彦祖”, 19)
get_info(520, 19) # 注意,形参上标注的类型只是提高代码的可读性,并不会限制实参的类型
help(get_info)

函数调用函数

  • 一个函数里面又调用了另外一个函数,这就是所谓的函数嵌套调用
  • 如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置

局部变量和全局变量

局部变量

  • 局部变量,就是在函数内部定义的变量
  • 其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
  • 部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储
  • 当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了

全局变量

如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量

  • 在函数外边定义的变量叫做全局变量
  • 全局变量能够在所有的函数中进行访问

总结: 当函数内出现局部变量和全局变量相同名字时,函数内部中的 变量名 = 数据 此时理解为定义了一个局部变量,而不是修改全局变量的值

global

  • 如果在函数中出现global 全局变量的名字 那么这个函数中即使出现和全局变量名相同的变量名 = 数据 也理解为对全局变量进行修改,而不是定义局部变量
  • 如果在一个函数中需要对多个全局变量进行修改,那么可以一次性全部声明,也可以分开声明

查看所有全局变量和局部变量

Python提供了两个内置函数globals()和locals()可以用来查看所有的全局变量和局部变量。

函数返回值

一个 返回值

  • 一个函数中可以有多个return语句,但是只要有一个return语句被执行到,那么这个函数就会结束了,因此后面的return没有什么用处

  • 如果程序设计为如下,是可以的因为不同的场景下执行不同的return

多个返回值

  • return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数据
  • 如果return后面有多个数据,那么默认是元组。
1
2
3
4
5
6
def test(a,b):
return a,b

a,b = test(24,2)
print(a,b)

总结:

  • 拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常
  • 除了对元组拆包之外,还可以对列表、字典等拆包

可变和不可变类型

  • 所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变
  • 可变类型(修改数据,内存地址不会发生变化)有: 列表、字典、集合
  • 不可变类型(修改数据,内存地址必定发生变化)有: 数字、字符串、元组

Python函数的基本使用

http://fahsa.cn/python/func1/

作者

Fahsa

发布于

2021-02-03

更新于

2021-06-25

许可协议

评论