自学内容网 自学内容网

Python入门--函数

目录

1. 函数介绍

2. 函数的定义

3. 函数的参数

4. 函数的返回值

5. 函数说明文档

6. 函数的嵌套调用

7. 函数的作用域

(1). 局部变量

(2). 全局变量

(3). global关键字


1. 函数介绍

         函数:是组织好的可重复使用的,用来实现特定功能的代码段

name = "CCZU"
print(len(name))

        为什么随时都可以使len()统计长度呢?因为,len()Python内置的函数,这是提前写好的,可以被重复利用,专门用来统计字符串长度这一功能。我们使用过的:input()print()str()int()等都是Python的内置函数

        如果库里没有设置这一内置函数,我们在每次想用这个功能的时候,就要实现下面这好几行代码。

str = "string"
length = 0
for i in str:
    length+=1
print(length)

        像这种需要经常复用的功能,为了降低代码的重复,Python已经贴心的为大家写好了,想用的时候直接找到对应功能的函数使用即可,这就是将这个功能封装成了函数。

def my_len(str):
    length = 0
    for i in str:
        length += 1
    print(length)

# 每次使用的时候直接调用即可
my_len("hello")
my_len("what")
my_len("please")

        那我们下面来学习一下怎么将这些频繁使用的代码封装成函数。

2. 函数的定义

注意:

① 参数如不需要,可以省略

② 返回值如不需要,可以省略

③ 函数必须先定义后使用

         函数定义之后,想使用定义的函数就要调用,根绝我们的定义来决定怎么调用。有返回值就要用变量来接收,有参数一定要传参数。

def say_hi():
    print("hi")
# 调用函数
say_hi()

3. 函数的参数

        传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据。

        比如我们要实现一个将两个数相加的功能函数,那我们肯定要让这个函数知道需要哪两个数相加,参数大家可以理解为参考的数据。也就是说这个相加的函数想知道自己要让哪些数加起来,就参考我们传的这些参数。

def add(x,y):
    print(x+y)
  • 函数定义中,提供的xy,称之为:形式参数(形参),表示函数声明将要使用2参数
  • 参数之间使用逗号进行分隔
  • 函数调用中,提供的56,称之为:实际参数(实参),表示函数执行时真正使用的参数
  • 传入的时候,按照顺序传入数据,使用逗号分隔

        最后一点大家要尤其注意,因为如果这个功能是实现两个数相除的,那么1/2和2/1可是完全不一样的两个结果。 

4. 函数的返回值

        如果我们想在调用函数的时候用一个变量接收函数调用后的结果,这个时候需要给函数加上返回值。

def add(x,y):
    return x+y

result = add(1,2)
print(result)

        函数体在遇到return后就结束了,所以写在return后的代码不会执行。

        如果函数没有使用return语句返回数据,那么函数实际上也是有返回值的。Python中有一个特殊的字面量:None,其类型是:<class NoneType>返回值的函数,实际上就是返回None这个字面

        None表示:空的、无实际意义的意思函数返回的None,就表示这个函数没有返回什么有意义的内容也就是返回了空的意思。

def say_he11o():
    print("He11o...")
    
# 使用变量接收say_he11o函数的返回值
result = say_he11o()
# 打印返回值
print(result) # 结果None

# 打印返回值类型
print(type(result)) # 结果<cass'NoneType'>

        None也可以主动使用return返回,效果等同于不写return语句。

        None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。

  • 用在函数无返回值
  • 用在if判断上:if判断中,None等同于False一般用于在函数中主动返回None,配合if判断做相关处理
def check_age(age):
    if age > 18:
        return "success"
    return None

result = check_age(5)
if not result:
    # 进入if表明result是None值,也就是False
    print("未成年,不可进入")
  • 用于声明无内容的变量上定义变量,但暂时不需要变量有具体值,可以用None来代替
name = None

5. 函数说明文档

        函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。我们可以给函数通过多行注释的形式添加说明文档,辅助理解函数的作用。我们在函数体之前写上函数参数表示什么,返回值什么,函数功能是什么。

def add(x, y):
    """
    add函数可以接收2个参数,进行2数相加的功能

    :param x: 形参x表示相加的其中一个数字
    :param y: 形参y表示相加的另一个数字
    :return: 返回值是2数相加的结果

    """
    result = x + y
    print(f"2数相加的结果是: {result}")
    return result

6. 函数的嵌套调用

        所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数

# 定义函数func_b
def func_b():
    print("---2---")

# 定义函数func_a,并在内部调用func_b
def func_a():
    print("---1---")
    # 嵌套调用func_b
    func_b()
    print("---3---")

# 调用函数func_a
func_a()

        如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次函数A执行的位置 

7. 函数的作用域

        变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用主要分为两类:局部变量和全局变量

(1). 局部变量

        局部变量是定义在函数体内部的变量,即只在函数体内部生效

def testA():
    num = 100
    print(num)
    
testA() # 100

print(num) # 报错:name 'num'is not defined

        变量a是定义在`testA`函数内部的变量,在函数外部访问则立即报错。  

        局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。

(2). 全局变量

        所谓全局变量,指的是在函数体内、外都能生效的变量

        如果有一个数据,在函数A和函数B中都要使用就要这个数据存储在一个全局变量里面,也就是定义在函数的外面

# 定义全局变量a
num = 100

# 定义函数testA,并访问全局变量num
def testA():
    print(num)

# 定义函数testB,并访问全局变量num
def testB():
    print(num)

testA() # 100
testB() # 100
print(num) # 100

(3). global关键字

        如果我们想要在函数内部对全局变量的值进行修改,修改的值仅在函数体内部有效。

# 定义全局变量a
num = 100

# 定义函数testA,并访问变量num
def testA():
    print(num)

# 定义函数testB,并访问变量num
def testB():
    num = 300
    print(num)

testA() # 100
testB() # 300
print(num) # 100

        这是因为testB里num=300实际上是testB自己又重新定义了一个num的局部对象,跟全局变量num已经不是同一个东西了。为了让这个局部变量num变回全局变量,我们引入了global关键字。

# 定义全局变量a
num = 100

# 定义函数testA,并访问全局变量num
def testA():
    print(num)

# 定义函数testB,并访问全局变量num
def testB():
    # global关键字用于将变量声明为全局变量
    global num
    num = 300
    print(num)

testA() # 100
testB() # 300
print(num) # 300

原文地址:https://blog.csdn.net/2301_79676950/article/details/142709338

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!