Python 函数

目录

一、函数的定义

二、函数的调用

三、函数的参数传递

1.参数个数

2.可选参数传递

3.可变参数传递

4.参数传递的两种方式

四、函数的返回值

五、局部变量和全局变量

规则1:局部变量和全局变量是不同变量

规则2:局部变量为组合数据类型且未创建,等同于全局变量


一、函数的定义

1.函数是一段具有特定功能的、可重用的语句组:每次使用函数可以提供不同的参数作为输入,以实现对不同数据的处理;函数执行后,还可以反馈相应的处理结果。

有些函数是用户自己编写的,称为自定义函数;python安装包也自带了一些函数和方法,包括Python内置的函数(如abs()、eval()、Python标准库中的函数(如math库中的pow())等。

2.函数是一种功能的抽象,一般函数表达特定功能

3.使用函数主要有两个功能:降低编程难度和代码复用。

函数可以在一个程序中的多个位置使用,也可以用于多个程序,当需要修改代码时,只需要在函数中修改一次,所有调用位置的功能都更新了,这种代码重用降低了代码行数和代码维护的难度。

4.函数是一段代码的表示,格式如下:

def <函数名>(<参数(0个或多个)>):
    <函数体>
    return <返回值>

注意:

函数定义时,所指定的参数是一种占位符

函数定义后,如果不经过调用,不会被执行

函数定义后,参数是输入,函数体是处理,结果是输出(IPO)

二、函数的调用

调用是运行函数代码的方式

程序调用一个函数需要执行以下4个步骤

1.调用程序在调用处暂停执行

2.在调用时将实参复制给函数的形参

3.执行函数体语句

4.函数调用结束给出返回值,程序回到调用前的暂停处继续执行

调用时要给出实际参数

实际参数替换定义中的参数

函数调用后得到返回值

def fact(n)  #函数的定义   fact 函数名
    s=0                    #函数体
    for i in range(n+1)
        s +=i
    return s              #返回值

fact(100)  #函数的调用      

三、函数的参数传递

1.参数个数

函数可以有参数,也可以没有,但必须保留括号

例:

def happy()  #函数的命名
    print("Happy birthday to you!")


happy()  #函数的调用

2.可选参数传递

函数定义时可以为某些参数指定默认值,构成可选参数,格式如下:

def <函数名>(<非可选参数>,<可选参数>)
    <函数体>
    return <返回值>

例:

def fact(n,m=1):  #该函数是计算n!//m,n为非可选参数,m为可选参数
    s=1
    for i in range (1,n+1)
        s *= i
    return s//m

fact(10)  #函数的调用
3628800  #该函数调用的结果,如果没有加入可选参数,可选参数为函数的默认值

fact(10,5)  #函数的调用
725760  #调用结果,可以看出,如果输入了可选参数,可选参数在调用过程中即使用输入值

3.可变参数传递

函数定义时可以设计可变数量参数,即不确定参数总数量,格式如下:

def <函数名>(<参数>,*b):
    <函数体>
    return <返回值>

例: 

#计算n!乘数

def fact(n,*b)  #函数的定义  *b为可变参数(为不确定参数的个数)
    s=1
    for i in range(1,n+1):
        s *= i
    for n in *b:
        s *=n
    return s


fact(10,3)  #函数的调用,此次调用,*b代表一个参数
725760


fact(10,3,5,8)  #函数的调用,此次调用*b代表三个参数,即for n in *b:此处*b=[3,5,8]
435456000

4.参数传递的两种方式

函数调用时,参数可以按照位置或名称方式传递

def fact(n,m=1):  #该函数是计算n!//m,n为非可选参数,m为可选参数
    s=1
    for i in range (1,n+1)
        s *= i
    return s//m

fact(10,5)  #(10,5)为位置传递
725760

fact(m=5,n=10)  #(m=5,n=10)为名称传递
725760

四、函数的返回值

函数可以返回0个或多个结果

return保留字用来传递返回值

函数可以有返回值,也可以没有,可以有return,也可以没有

return可以传递0个返回值,也可以传递任意多个返回值

函数调用时,参数可以按照位置或名称方式传递

def fact(n,m=1):  #该函数是计算n!//m,n为非可选参数,m为可选参数
    s=1
    for i in range (1,n+1)
        s *= i
    return s//m,n,m

fact(10,5)
(725760,10,5)  #元组类型

a,b,c = fact(10,5)
print(a,b,c)
725760 10 5

五、局部变量和全局变量

<语句块1>
def <函数名>(<参数>):
    <函数体>
    return <返回值>
<语句块2>

#程序全局变量即从语句1到语句块2一直存在的变量
#函数局部变量即只存在于从def到return所构成的函数中

规则1:局部变量和全局变量是不同变量

(1)局部变量是函数内部的占位符,与全局变量可能重名但不同

(2)函数运算结束后,局部变量被释放

(3)可以使用global保留字在函数内部使用全局变量 

n,s = 10,100  #n,s为全局变量
def fact(n) 
    s=1                 #fact()函数中的n,s是局部变量   
    for i in range(n+1)
        s *=i
    return s 
print(fact(n),s)  #n,s是全局变量

运行结果
3628800 100
n,s = 10,100  #n,s为全局变量
def fact(n) 
    s=1                  #fact()函数中的n,s是局部变量 ,此处s是局部变量,与全局变量s不同  
    for i in range(n+1)
        s *=i
    return s             #此处局部变量s是3628800     
print(fact(n),s)         #此处全局变量s是100


运行结果
3628800 100
n,s = 10,100            
def fact(n)             #fact()函数中使用global保留字声明
    global s            #此处s是全局变量s
    for i in range(n+1)
        s *=i
    return s            #此处s是全局变量s
print(fact(n),s)        #此处全局变量s被函数修改


运行结果
362880000 362880000

规则2:局部变量为组合数据类型且未创建,等同于全局变量

使用规则

(1)基本数据类型,无论是否重名,局部变量与全局变量不同

(2)可以通过global保留字在函数内部声明全局变量

(3)组合数据类型,如果局部变量未真实创建,则是全局变量

Is = ["F","f"]        #通过使用[]真实创建了一个全局变量列表Is
def func(a):
    Is.append(a)      #此处Is是列表类型,未真实创建,则等同于全局变量
    return 
func("C")             #全局变量Is被修改
print(Is)


运行结果
['F','f','C']
Is = ["F","f"]        #通过使用[]真实创建了一个全局变量列表Is
def func(a):
    Is = []           #此处Is是列表类型,真实创建,Is是局部变量
    Is.append(a)
    return 
func("C")             #局部变量Is被修改
print(Is)


运行结果
['F','f']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值