ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python基础---------函数

2022-02-05 09:30:16  阅读:125  来源: 互联网

标签:return 函数 python 局部变量 -- 参数 全局变量 ---------


python中函数的定义和使用

基本格式

def <函数名> (<参数(0个或多个)>):

      <函数体>

      return <返回值>

(1)函数定义时,可以为某些参数指定默认值,构成可选参数

 (本人理解):有默认值的参数就叫做可选参数,这与C++中参数可以给定默认值的做法应该是相同的,当函数的参数表中含有可选参数时,该可选参数可以选择不进行传入,但是该参数在函数中存在默认值,可以直接进行使用

书写形式:

def <函数名>(<非可选参数>,<可选参数>):

      <函数体>

      return <返回值>

注意:python中要求,所有可选参数必须放在非可选参数之后

(2)可变参数传递

函数定义时,可以设计可变数量参数,即不确定参数总数量的参数

def <函数名>(<参数>,*b):

     <函数体>

     return <返回值>

*b可以是*a,*c等等

如果有这样一个函数

def f(a,*b):

    <函数体>

    return <返回值>

此时,该函数的参数个数是大于等于1的,即*b在函数中充当一个元素序列

(3)函数的返回值

-return保留字用来传递返回值

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

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

def fact(n,m=1):

    s = 1

    for i in range(1,n+1):

        s*=1

    return s//m,n,m

fact(10,5)

>>>(0, 10, 5)

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

print(a,b,c)

>>>0 10 5

return 关键字返回多个值时,返回的其实是一个元组

(4)全局变量和局部变量

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

--局部变量是函数内部的占位符,与全局变量可能重名但是不通

--函数运算结束后,局部变量将被释放

--可以使用global关键字在函数内部使用全局变量,(global此关键字用于在函数内部声明,此变量是全局变量而不是局部变量)

即,如果在一段程序中,已经有了一个全局变量s,而我们在接下来的一个函数中,想要使用这个全局变量进行函数内部的运算的话,那么,在函数内部,global s进行这样的操作即可

(通过此方可以在函数内部进行对外部变量的修改)

规则2:局部变量如果是组合数据类型,而且未在函数内部创建,那么该局部变量等同于全局变量

注意:如果一个组合数据类型的变量在函数外有定义,并且其在函数内部也进行了真实创建,那么该变量在函数内部就是该函数的局部变量,但是在函数内部对其做出的改变并不能影响到函数外部,即相当于其在函数内部被重新创建,此时函数内部的仅仅是一个占位符,与外部的那个全局变量完全不同

使用规则:
--基本数据类型,无论是否重名,局部变量与全局变量不同

--可以在函数内部通过global关键字声明使用全局变量

--组数据类型,如果局部变量未真是创建,则是全局变量

(5)lambda函数

功能:返回一个函数名作为结果

--lambda函数是一种匿名函数,即没有名字的函数

--lambda函数用于定义简单的.能够在一行内表示的函数

使用形式:

<函数名>  = lambda<参数>:<表达式>

注意:冒号后只能跟表达式,而不可以接函数体

例如:

f = lambda x,y:x+y

f(10,15)

25

f = lambda :"lambda函数"

print(f())

lambda函数

标签:return,函数,python,局部变量,--,参数,全局变量,---------
来源: https://blog.csdn.net/LaBi007/article/details/122787986

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有