1.7Python语言的函数(Function)

1.函数声明

注意:在同一个作用域,可以重新声明同名函数,后定义的函数声明会覆盖先定义的函数声明。

def 函数名(值形参名, 默认值形参名 = 默认值, *元组形参名, **字典形参名):
    #函数体

2.lambda函数表达式

lambda 值形参名, 默认值形参名 = 默认值, *元组形参名, **字典形参名 : 表达式

3.函数作用域

3.1全局函数

名称修饰符
全局函数——————

3.2成员方法

注意:Python 语言不支持类访问器属性和静态访问器属性。

名称修饰符
类方法@classmethodcls
静态方法@staticmethod
实例访问器属性(getter)@property
实例访问器属性(setter)@实例方法名.setter
实例方法self
构造函数self

3.3局部函数

名称修饰符
局部函数——————

4.函数名

函数名是第一次跟函数定义绑定的函数名或变量。

4.1函数声明的函数名

def f():
    pass

print(f.__name__)  # 'f'

函数声明是 function 类的实例,函数名就是存储这个实例的变量,因此在赋值后可以通过重新赋值更改其值。

def f():
    return 1

print(f())  # 1
f = 2
print(f())  # 报错
print(f)    # 2

4.2lambda函数表达式的函数名

lambda 函数表达式的函数名始终为 <lambda>,变量名 f 仅是引用。

f = lambda : print(1)
print(f.__name__)  # <lambda>
f()                # 1

5.函数引用表达式

函数名

6.函数定义作为值

6.1作为值赋给变量

def sum(num1, num2):
    return num1 + num2

print(sum(10, 10))  # 20

another_sum = sum
print(another_sum(10, 10))  # 20

6.2作为函数的实参(回调函数)或返回值

接受一个回调函数作为实参 或 返回值为函数定义,只要满足其一,函数 callSomeFunction 和 函数 returnSomeFunction 则称为高阶函数(Higher Order Function)。

作为实参的函数定义 add 则称为回调函数(Callback Function)。

作为返回值的函数定义 add2 不一定是回调函数,具体取决于函数定义 add2 是否作为实参。

#作为实参(回调函数)
def call_some_function(some_function, some_argument):
    return some_function(some_argument)

def add(num):
    return num + 10

print(call_some_function(add, 10))  # 20
#作为返回值
def return_some_function():
    def some_function(num):
        return num + 10
    return some_function

add2 = return_some_function()
print(add2(10))  # 20

7.形参分类

注意:在函数体调用元组形参时,元组形参名的前面无 *

注意:在函数体调用字典形参时,字典形参名的前面无 **

名称修饰符
值形参——————
默认值形参——————
元组形参*
字典形参**

8.传递实参

实参的类型无需与默认值形参的类型兼容。

实参的个数可以小于、等于、大于形参的个数,甚至可以没有实参。

实参的传递不仅支持按位置从左往右依次传递方式,还支持按关键字传递方式。

9.函数调用表达式

#无实参
函数名()

#有实参
函数名(实参)
#按关键字传递方式
函数名(形参名 = 实参值)

10.函数返回值

参见 return 语句。

11.函数签名

Python 语言的函数签名由 修饰符、返回值的类型、函数名、形参类型、形参个数 组成。

12.函数重载(Overload)

在同一个作用域,可以重新声明同名函数,后定义的函数声明会覆盖先定义的函数声明。

因此,Python 语言不支持函数重载(Overload)。

13.函数递归(Recursion)

一个函数定义的函数体内有此函数的函数调用,此时便形成了函数递归(Recursion)。

def tri_recursion(k):
  if(k > 0):
    result = k + tri_recursion(k - 1)
    print(result)
  else:
    result = 0
  return result

print("Recursion Example Results:")
tri_recursion(6)

#输出
Recursion Example Results:
1
3
6
10
15
21

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/python/pythonlang/35543.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2025年1月6日 22:06
下一篇 2025年1月8日 22:08

相关推荐

  • 1.5Python语言的变量(Variable)

    1.变量声明 变量在赋值后可以通过重新赋值更改其值。 注意:新的值的类型不一定与老的值的类型相同。 2.变量作用域 2.1全局变量 名称 修饰符 全局变量 —————— 2.2成员变量 名称 修饰符 类变量 —————— 实例变量 self. 2.3局部变量 名称 修饰符 局部变量 —————— 3.变量引用表达式 4…

    Python语言教程 2025年1月5日
    0810
  • 2.9Python语言的成员可见性(Visibility)

    成员的可见性不支持 public、protected、private。 成员的可见性都是 public。

    Python语言教程 2025年2月9日
    01060
  • 2.5Python类型之元组(Tuple)

    元组的索引是整数类型。 元组的索引是有序的。 元组的元素可以是任何 Python 数据类型,且不必都是同一个类型。 元组的元素的个数(长度)可以动态改变,不可以添加、更改、删除元素。 元组的元素不可以重复。 1.元组声明 2.访问元组 访问方式 描述 t[i] 索引 i 对应的元素 t[i:j] 索引 i(包含) 到 …

    Python语言教程 2025年2月5日
    01020

发表回复

登录后才能评论