当前位置: 首页 > news >正文

【第五章-基础】Python 函数---以一个初学者来理解函数

目录

 5.函数

5.1创建函数、作用域

5.2 传递参数

5.3 返回值

5.4 匿名函数(lambda)

5.5 函数模块


 5.函数
5.1创建函数、作用域

解释:

1.函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
2.任何传入参数自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
3.函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4.函数内容以冒号起始,并且缩进。return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

(1) 函数的创建
语法:
def 函数名 ([输入参数]):
    函数体
    [return XXX]      #return 返回值列表(也就是说不止一个),是非必须的(1) 函数的创建


语法:
def 函数名 ([输入参数]):
    函数体
    [return XXX]        #return 返回值列表(也就是说不止一个),是非必须的

def cal(a,b):  #a,b 为形式参数,形参的位置是在函数的定义处c=a+breturn c
result=cal(10,20)  # 10,20称为实际参数的值,实参的位置是函数的调用处
print(result)res=cal(a=10,b=20)  # =左侧的变量称为关键字,根据形参名进行实参传递
print(res)

结果: 30  30

(2)变量的作用域-------------->程序代码能访问到该变量的区域

# 局部变量
定义:在函数定义处的参数和函数内部定义的变量
作用范围:仅在函数内部,函数执行结束,局部变量的生命周期也结束了

在函数内定义并使用的变量、只在函数内部有效、局部变量使用global声明,这个变量就会成为全局变量

# 全局变量
定义:在函数外定义的变量或函数内部使用global关键字修饰的变量
作用范围:整个程序,程序运行结束,全局变量的生命周期才结束

# 变量的作用域
def fun(a=10,b=60):c=a+b   # c,就称为局部变量、因为c是在函数内部定义的,a,b作为形参作用域也是在函数的内部print(c)
fun()def fun1():global age  # 函数内部定义的变量,可以不 用global进行定义,将局部变量变为全局变量age=20print(age)
fun1()
print(age)

结果:

20
20

5.2 传递参数

(1)实参:位置实参、关键字实参            # 如上述代码所示,a,b为形参,10,20为实参

                                                                   ##位置实参    ,要求位置实参与形参相对应

def Introduce(name,age):print(f"我的名字是{name},今年{age}岁")Introduce("小强",18)
Introduce(18,"小强")

结果:

我的名字是小强,今年18岁
我的名字是18,今年小强岁

解释:name,age为形参,小强,18为实参

(2)关键字实参

def Introduce(name,age):print(f"我的名字是{name},今年{age}岁")Introduce(name="小强",age=18)
Introduce(age=18,name="小强")

结果:

我的名字是小强,今年18岁
我的名字是小强,今年18岁

解释:关键字实参,跟顺序无关,已经指定清楚

(3) 既含位置实参又含关键字实参

def Introduce(name,age):print(f"我的名字是{name},今年{age}岁")Introduce("小强",age=18)

注意事项
如果在传参的过程中,既有位置传参也有关键字传参,那么要遵循位置传参在前,关键字传参在后

(4)默认值参数  ========就是给形参指定默认值

def Person(age,name='小强'):     # 在定义函数的过程中,直接赋值,叫做默认值传参print("我的名字是{0},年纪为:{1}".format(name,age))
# 函数的调用
Person(18)    # 不传入任何参数,为默认值传参

注意事项:形参需要在默认值参数前

(5)个数可变的位置形参,前面加一颗星

def fun2(*args):   # 个数可变的位置形参,前面加一颗星print(args)fun2(10,20,30,40) # 返回值为元祖
fun2([10,20,30,40])#若传入的为一个列表,虽然列表内有4个元素,实际上被当成一个元祖,需要在列表前加一个*用来解包,就会生成四个元素

结果:

(10, 20, 30, 40)
([10, 20, 30, 40],)

(6)个数可变的关键字传参   前面加两颗星加上两颗星

def fun3(**args):  # 个数可变的关键字传参,前面加两颗星加上两颗星print(args)   fun3(a=11,b=22,c=33,d=44)  # 返回值为字典,解包也需要加上两颗星

结果:

(10, 20, 30, 40)
{'a': 11, 'b': 22, 'c': 33, 'd': 44}

(7)关键字形参

def fun4(a,b,*,c,d):print('a=',a)print('b=', b)print('c=', c)print('d=', d)# fun4(10,20,30,40)   # 采用位置实参传递
fun4(a=11,b=22,c=33,d=44) # 关键字实参传递
fun4(10,20,c=33,d=44)    #  前两个参数采用位置实参传递,后两个采用关键字实参传递

结果:

a= 11
b= 22
c= 33
d= 44
a= 10
b= 20
c= 33
d= 44

(8)传递列表      

# 传递列表
def lst(names):for i in names:print(f"名字叫做:{i}")
lst(["小强","小谢","小张"])

结果:

名字叫做:小强
名字叫做:小谢
名字叫做:小张

解释:把参数直接当成一个列表就行

5.3 返回值

(1) 函数的返回值       可返回任何类型的值,例如变量、列表、字典

def fun(num):odd=[] # 存储奇数even=[] # 存储偶数for item in num:if item%2==0:odd.append(item)else:even.append(item)return odd,even
result=fun([12,45,78,9,56,47])
print(result)

# 函数的返回值:
1)、如果函数没有返回值(函数执行完毕,不需要给调用处提供数据),return可以不写
2)、函数的返回值,如果是一个,直接返回类型
3)、函数的返回值,如果是多个,返回的结果为元祖
 

什么时候需要return返回值,什么情况下不需要return返回值

主要看程序的目的是什么,如果只是执行某些操作,则不需要返回值。

def hello():print ("hello")def cal(a,b):c=a+breturn chello()
print (cal(6,3))

解释:函数一就不要return返回值,而函数二就需要return返回值。


##return的作用:

1. 结束函数执行

return 语句的首要作用是结束函数的执行一旦执行到 return函数将停止执行余下的代码,并将控制权交还给调用者。

2. 返回值

return 语句后跟的表达式将被计算并返回给函数的调用者这允许函数输出数据,使得函数不仅能执行操作,还能提供操作结果。

5.4 匿名函数(lambda

概念:是指没有名字的函数,这种函数只能使用一次
使用场景:函数体只有一句代码且只有一个返回值时,可以使用匿名函数来简化

语法lambda arguments:expression         ##### result=lambda 参数列表:表达式

解释:

arguments:   参数列表,其中包含多个参数
expression:表示函数体,可以是任意表达式
lambda返回的是一个函数对象,一般将其赋值给一个变量,然后通过这个变量来调用函数

add=lambda x,y:x+y
print(add(2,3))

结果:5

注意:lambda表达式 是一个单行表达式函数,不能包含多行代码或者标准的控制但是可以使用三元表达式
  
三元表达式语法:
    <experssion1> if <condition> else <experssion2>
    解释条件成立执行表达式1条件不成立执行表达式2

5.5 函数模块

作用:避免函数类名称相冲突的问题


# 创建模块
新建一个.py文件,就是一个模块,名称尽量不要与Python自带的标准模块名称相同


1)、导入模块的两种方式
# 导入模块
import 模块名称 [as 别名]

#导入多个模块,用英文逗号隔开
import math,time,random

# 导入模块的函数或者类或变量

from 模块名称  import 函数\变量\类*             #星代表导入这个模块的所有,叫做通配符


例子:
# 导入模块的函数
from math import pow
print(math.pow(2,3))

结果:
8.0


# 导入自定义模块
例子:
from cal import cal     # cal 是自己声明的一个模块,也就是一个.py文件
print(cal(9,8))

结果:
17


第三方模块的安装和卸载

#安装
pip install 模块名称

#卸载
pip uninstall 模块名称

http://www.dtcms.com/a/272986.html

相关文章:

  • 第十六天,7月10日,八股
  • 【网络安全】利用 Cookie Sandwich 窃取 HttpOnly Cookie
  • vue中token的使用与统计实践
  • android闪光灯源码分析
  • Android 插件化实现原理详解
  • 【读书笔记】如何画好架构图:架构思维的三大底层逻辑
  • 遥感影像图像分割-地物提取模型训练与大图直接推理流程
  • 突破传统局限:60G 3D毫米波雷达如何实现精准人体全状态检测?
  • Vue3基础知识
  • 论文笔记(LLM distillation):Distilling Step-by-Step!
  • 5、Vue中使用Cesium实现交互式折线绘制详解
  • 电脑被突然重启后,再每次打开excel文件,都会记录之前的位置窗口大小,第一次无法全屏显示。
  • imx6ul Qt运行qml报错This plugin does not support createPlatformOpenGLContext!
  • 无人机抗风模块运行与技术难点分析
  • Flowable22变量监听器---------------持续更新中
  • OneFileLLM:一键聚合多源信息流
  • 股指期货交割交易日到期没平仓盈亏以哪个价格计算?
  • RP2040使用存储系统
  • 2025年7月10日泛财经要闻精选
  • ACPU正式启动全球化布局,重构AI时代的中心化算力基础施设
  • 基于cornerstone3D的dicom影像浏览器 第三十二章 文件夹做pacs服务端,fake-pacs-server
  • 专题 数字(Number)基础
  • pytorch深度学习-Lenet-Minist
  • (LeetCode 每日一题) 3440. 重新安排会议得到最多空余时间 II (贪心)
  • RabbitMQ消息队列——三个核心特性
  • LeetCode 1652. 拆炸弹
  • AI时代的接口调试与文档生成:Apipost 与 Apifox 的表现对比
  • Leetcode刷题营第十九题:对链表进行插入排序
  • Python 网络爬虫中 robots 协议使用的常见问题及解决方法
  • 图解 BFS 路径搜索:LeetCode1971