python自学篇九[ 函数(一):参数+对象]

Python对象作为参数传递到函数/方法的机制 我们先创建了一个Person类,类中有两个属性,分别为name属性和age属性,随后在Person类外创建了一个 f1 函数。随后通过执行下述代码创建了一个对象p1,相当于在我们的主栈区有了p1对象,这个p1指向数据区的一个空间,假设该空间的地址为0x1122。接下来执行代码,即我们给p1对象的name属性赋值为“jordan”,给age属性赋值为21,那么我们的内存图应如下所示。接下来,执行。 阅读详情

python基础系列:
python自学篇一[ Anaconda3安装 ]
python自学篇二[ pycharm安装及使用 ]
python自学篇三[ 判断语句if的使用 ]
python自学篇四[ 基本数据类型和字符串常用处理 ]
python自学篇五[ 列表 ]
python自学篇六[ 元组 ]
python自学篇七[ 字典+深拷贝与浅拷贝 ]描述
python自学篇八[ 循环:while+for+pass+range()+推导式 ]
python自学篇九[ 函数(一):参数+对象 ]
python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器 ]
python自学篇九[ 函数(三):变量作用域+ATM+5个小练习 ]
python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数 ]
python自学篇十[ 面向对象 (一) :面向对象概念+定义类+练习一]
python自学篇十[ 面向对象 (二) :继承+多继承+类属性+实例属性]
python自学篇十[ 面向对象 (三) :访问限制+类方法+静态方法]
python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]
python自学篇十二[ 文件:打开+读取+写入+3个习题]

函数概述

组织好的、可重复使用的、用户实现单一或者关联功能的代码段。函数能够提高应用的模块性和代码的重复利用率。Python提供了很多内置的函数,比如len等等,另外也可以根据自己的业务需求进行用户自定义函数的创建。

  • 定义规则
    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
    任何传入参数和自变量必须放在圆括号中间。
    函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    函数内容以冒号起始,并且缩进。
  • 语法
 def 函数名([参数列表]):      #参数列表可选项
	函数体
  • 函数调用
    Python内置了很多函数,内置函数可以直接调用。调用一个函数需要知道函数的名称和函数的参数。
函数名([参数列表])
  • 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给这个函数起了一个别名
students=[2,3,4,3,23,43]
a=len #变量a指向len函数
num=a(students) #可以通过a调用到len函数
print("studnets列表元素的个数为:",num)

函数参数

形参和实参

形参:定义函数里面的是形参
实参:调用函数时传递的是实参

必备参数

  • 函数定义中允许拥有多个形参,因此函数在调用的时候,也可能包含多个实参。向函数传递参数的方式有很多,通过实参和形参的顺序对应,这就是位置实参。只有位置一致,才能被正确匹配。位置实参是最简单也最常用的关联方式。
 def getInfo(name,address):
     print('大家好我叫%s,我来自%s'%(name,address))
getInfo('刘德华','香港')  #第一个实参对应了第一个形参,第二实参对应了第二个形参。
#参数的个数不能少,不能多。 参数的位置要一一对应

关键字参数

  • 关键字实参是传递给函数的名称-值对。直接在实参中将名称和值关联起来,因此向函数传递实参时不会混淆。函数调用使用关键字参数来确定传入的值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值.
 def getInfo(name,address):
     print('大家好我叫%s,我来自%s'%(name,address))
 getInfo(name='刘德华',address='香港')  #给实参加上关键字 。关键字对应我们的形参

默认参数

  • 函数定义的时候,设置的参数是形参。那么也可以给每个形参指定一个默认值。当调用函数时,如果没有传入实参,就使用形参的默认值。如果调用的时候传入了实参,那么程序将使用传入的实参。
def getInfo(name,address = '香港'): #默认值参数,就是在声明函数的时候给形参赋值
    print('大家好我叫%s,我来自%s'%(name,address))
getInfo('刘德华')   #有默认值的形参,可以不用传递
getInfo('刘德华','九龙')   #如果传递参数,会覆盖原来的默认值

不定长参数

  • 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数。
    语法如下:
  • *args 是接受所有未命名的参数(关键字)
  • **agrs2 是接受所有命名的参数(带关键字的)
def getInfo(name,address,*args,**agrs2):
    print('大家好我叫%s,我来自%s'%(name,address))
    print(args)  #args 是一个元组类型
    print(agrs2)  #字典数据类型
    
getInfo('刘德华','九龙','a','b','c','d',age = 18)

结果:

大家好我叫刘德华,我来自九龙
('a', 'b', 'c', 'd')
{'age': 18}

可变对象与不可变对象的传递

  • 在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict,set等则是可以修改的对象。
  • 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
  • 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了
区别
  • 不可变对象(值传递):传递的是对象的值,不是对象本身,如果修改值,修改的是另一个复制的对象,不会影响原来对象的本身
def fun(args):
    args = 'hello'   #重新赋值
    print(args)   #输出hello

str1 = 'baby' #声明一个字符串的变量   不可变数据类型
fun(str1)    #将该字符串传递到函数中
print(str1)   #还是baby  并没有被改变
  • 可变对象(引用传递):传递对象自己。函数内部如果修改值会影响对象本身。
def fun(args):
    args[0] = 'hello'   #重新赋值
    print(args)   #输出

list01 = ['baby','come on'] #声明一个字符串的变量   不可变数据类型
fun(list01)    #将该字符串传递到函数中

print(list01)  #传递的是对象本身,函数里面被修改了值,原对象也会跟着修改
python自学篇一[Anaconda3安装] 一.python自学篇一[Anaconda3安装] Anaconda是什么 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python... 阅读详情

相关推荐

python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

练习:亡者农药小游戏 1、创建三个游戏人物,分别是: 属性: 名字:name,定位:category,血量:Output技能:Skill 英雄: 铠,战士,血量:1000 技能:极刃风暴 王昭君,法师 ,血量:1000 技能:凛冬将至 阿轲,刺客,血量:1000 技能:瞬华 2、游戏场景,分别: 偷红buff,释放技能偷到红buff消耗血量300 solo战斗,一血,消耗血量500 补血,加血20...

Web_Student的博客 2959

26. Python中函数参数的按对象传递

《Python编程的术与道:Python语言入门》视频课程 《Python编程的术与道:Python语言入门》视频课程链接:https://edu.youkuaiyun.com/course/detail/27845 函数参数的按对象传递 如何将函数调用中的参数传递给函数的参数(即函数参数的自变量的评估策略),因编程语言而异。 最常见的评估策略是“按值调用”(“Call by Value” )和“按引用调用”(“Call by Reference”): 按值调用(Call by Value ) 最常见的策略是按值调用评

bai666ai的博客 3004

python自学篇九[ 函数(三):变量作用域+ATM+5个小练习]

变量的作用域 个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。 定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域 变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下: 局部变量:声明在函数内部的变量是局部变量,局部变量的作用于只在于函数中,外部无法使用 不同的函数,可以定义相同的名字的...

Web_Student的博客 724

python 函数参数(必选参数、默认参数、可选参数、关键字参数)

参考: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000 ######################################################

u012005313的专栏 13万+

python自学之路-进阶习题篇(一)函数篇

1.定义一个方法 func,该func可以引入任意多的整型参数,结果返回其中最大与最小的值。 def func(*num): for i in num: if not isinstance(i,int): return("输入的参数必须为整数") a=sorted(num) return("最大值%s,最小值%s." % (a[...

邴文玉的博客 1035

Python函数传参是传参对象的值,还是参数对象的引用?

为了弄清楚python函数传参到底是传值还是传引用的问题,进行了下面的小实验(以列表对象为例): (1)如何让两个变量指向同一个对象?: a = [1,2,3,4] b = a[:] c = a print('id(a)={}'.format(id(a))) print('id(b)={}'.format(id(b))) print('id(c)={}'.format(id(c))) #r...

Olivaf的博客 4147

Python之函数对象作为参数

秉承着一切皆对象的理念,我们再次回头来看函数(function)。函数也是一个对象,具有属性(可以使用dir()查询)。作为对象,它还可以赋值给其它对象名,或者作为参数传递。函数作为参数传递函数可以作为一个对象,进行参数传递。函数名(比如func)即该对象。比如说:def test(f, a, b): print 'test' print f(a, b)test(func, 3, 5

公众号shadow sock7 9805

Python自学路线图之Python基础自学

文章目录Python基础自学技术要点Python自学--Python第一个程序Python自学--条件控制语句和循环语句Python自学--容器类型Python自学--函数Python自学--文件操作Python自学--面向对象Python自学--异常处理Python自学--模块和包Python基础自学资源 Python自学路线图从Python基础语法开始,Python第一个程序,条件控制语句基础...

CZ-001的博客 682

python类 object 作为参数_python – 以Object作为参数的类

在Python2中,这声明Table是一个new-style class(相对于“经典”类)。在Python3中,所有类都是新式类,因此不再需要。新样式类有一些经典类缺少的特殊属性。class Classic: passclass NewStyle(object): passprint(dir(Classic))# ['__doc__', '__module__']print(dir(NewSty...

weixin_42525672的博客 2108

Windows本地部署Qwen3-14B实战指南:Ollama+Open WebUI零Docker方案

大语言模型本地部署是AI工程化落地的关键环节,其核心在于推理框架兼容性、硬件加速适配性与端到端稳定性。Ollama作为轻量级模型运行时,原生支持Windows DirectML与CUDA,规避了Docker/WSL2虚拟化开销和llama.cpp编译风险;Qwen3-14B则凭借128K上下文、Tool Calling原生支持及中文长文本结构化能力,成为政务、金融等场景首选。本文聚焦Windows平台真实约束——显存阈值、驱动版本匹配、路径编码兼容、离线知识库集成(RAG)等工程细节,提供经63台Windo

weixin_32136203的博客 413

Github多人协作

最近有门课程需要几个人一起开发一个项目,此前我们基本都是单干的,多人合作意味着需要及时将我们每个人的代码进行合并,U盘传文件这种方式太慢了,效率不行,而且没法解决两个人同时修改一个文件的问题,这次我们就尝试使用Github来协助开发。下面就来记录一下这次开发遇到的一些问题和解决的方法。 Git的安装 从官网下载最新版按照默认安装即可。 此处不多加说明。 Git常用命令 在此放上一...

yzr1216的博客 1万+

python 参数解析_如何进行处理Python对象参数解析

展开全部在Python对象中使用C语言编写的扩展模块,必须将其编译成动态链接62616964757a686964616fe4b893e5b19e31333337376331库的形式,通常使用Python的C语言扩展接口提供的函数PyArg_ParseTuple()来获得这些参数值,希望本文能够对大家有帮助。Python是用C语言实现的一种脚本语言,本身具有优良的开放性和可扩展性,并提供了方便灵活的...

weixin_39628594的博客 395

记一次在JAVA中客户端使用axis调用webservice服务端出现的异常:Unmarshalling Error: For input string: ""

在使axis调用webservice服务端,参照网上给的demo: Call call = (Call) service.createCall(); call.setTargetEndpointAddress(endpoint);//设置服务请求路径 QName qn = new QName(name); call.setOperationName(qn); call.addParamet

kry1201的专栏 8080

Python基础(九)——print函数详解,配合参数示例详解

本文以Python3以上为学习基础。 目录 print:输出语句 1、常规输出 2、print()函数 (1)参数1:*objects -- 对象 (2)参数2:sep -- 用来间隔多个对象 (3)参数3:end -- 用来设定以什么结尾。 (4) 参数4:file -- 要写入的文件对象。 (5) 参数5:flush -- 输出是否被缓存。 什么是语句? print "Hello, World"就是语句。 条件语句,分支语句,循环语句…… print:输出语句 prin..

陌上人如玉,公子世无双。 2万+

Embarcadero Dev-C++ 6.3安装教程【保姆级】

Embarcadero Dev-C++ 6.3安装教程,保姆级教程~

Thebest_jack的博客 1万+

YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图)

YOLOv11 由 Ultralytics 在 2024 年 9 月 30 日发布, 最新的 YOLOv11 模型在之前的 YOLO 版本引入了新功能和改进,以进一步提高性能和灵活性。YOLO11 在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 28万+

Python零基础入门(九)——函数,类和对象

欢迎来到 Python 零基础入门系列的第九篇!前面的文章中,已经介绍了 Python 的基本语法、控制流程和数据类型等内容。这一篇博客将继续探索 Python 编程的核心概念——函数,类和对象。

一名机电研究生的博客 5745

实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)

一、需求描述 目前使用的公司网络只能够上内网,但是又有上外网查资料的需求: ①想要实现电脑既能上内网的同时也可以上外网; ②想要使用其他外网电脑使用外网连接到该电脑,通过该电脑访问内部的网络内容。 二、准备内容 电脑必须具备两个网卡,即:可以同时连接内网和外网(比如我的笔记本就可以:使用网线连接笔记本网口与内网通讯,使用WIFI连接手机热点访问外部网络); 注意:如果只有一个网口,可以另外购买USB的无线网卡来实现上网卡。 三、实现电脑同时上内网和外网的操作步骤 3.1、网络拓扑图 ..

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2万+

python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数]

递归函数 递归函数:递归就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。(一句话,自己调用自己) 举例,计算阶乘 n! = 1 * 2 * 3 * … * n,用函数 fact(n)表示,可以看出: 1! = 1 2! = 2 × 1 = 2 × 1! 3! = 3 × 2 × 1 = 3 × 2! 4! = 4 × 3 × 2 × 1 = ...

Web_Student的博客 556

CATIA二次开发一一一获取属性的几种方法

这些方法覆盖了CATIA CAA开发中属性操作的典型场景,开发者可通过类型判断实现递归遍历、跨文档关联等复杂逻辑。此方法用于遍历对象的所有属性,获取属性键后可通过类型判断选择后续处理方式。适用于处理嵌套对象或关联对象的场景(如几何特征关联制造特征)。适用于简单属性值的直接读取(如版本号、状态标识等)。用于处理多值属性(如多选参数、装配体子件列表等)。用于处理跨文档引用(如零件关联图纸文件)。

工业软件开发 431

【SI案例分享】1000 BASE-T1共模终端的分析与评估

以太网的MDI接口应用中,共模端接网络的应用广泛,并且,其电路参数从100 BASE-T1到1000 BASE-T1保持了相同的参数定义,这就不得不引起使用者的怀疑,毕竟百兆和千兆以太网的工作频段差异巨大,这样的设计真的可以做到上下兼容吗?本文针对此问题,进行了深入的探讨。

一只豌豆象的博客 1364

python自学篇十[ 面向对象 (一) :面向对象概念+定义类+练习一]

a

Web_Student的博客 510

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

头歌python 函数自学引导

任务描述本关任务:编写一个能计算整数幂运算的函数。编程要求根据提示,在右侧编辑器补充代码,先定义一个没有参数的函数,函数的体程序功能是先输入一个整数x,再输入一个整数n,计算并输出整数x的n次幂(函数体语句除返回值语句外,与第一关相同)。# 在下面一行从行首开始补充函数定义语句"""此函数用于计算整数x的n次幂,无参数,返回幂运算结果,一个整数。函数中需要用程序语句接受用户输入的整数的底数x和指数n,计算x的n次幂,返回计算结果"""# 对齐此位置写函数体语句和返回值语句。

2401_87914305的博客 2089

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

关于Python中函数传递参数为可变对象问题

关于Python中函数传递参数为可变对象问题 python函数传值机制: python中,函数传递参数实际上就是给变量产生一个复制品,然后将复制品传入到函数中,而变量本身不收影响。 """ 实现a、b变量的值交换,验证参数变化 """ def data(a, b): a, b = b, a print("函数里a的值是:%d" % a) print("函数里b的值是:%d...

t8t359的博客 1588

python自学篇三[判断语句if的使用]

python自学篇三[判断语句if的使用] 输入三个整形数,输出最大的数字 x = int(input('请输入第一个数:')) y = int(input('请输入第二个数:')) z = int(input('请输入第三个数:')) if x>y: if x>z: print('最大的数是:%d'%x) else: print(...

Web_Student的博客 787

Python零基础入门(九)——函数,类和对象_python 函数 和对象

面向对象编程(Object-Oriented Programming,OOP)是一种重要的编程范式,它将数据和操作数据的方法封装在一起,形成对象。OOP 的核心思想是将现实世界的事物抽象成一个个对象,并通过定义类来描述这些对象的特征和行为。类是对象的蓝图,而对象是类的实例。在 Python 中,一切皆为对象。OPP 有三大基本特征,分别是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。封装。

2501_90433289的博客 823
上一篇: python自学篇八[循环:while+for+pass+range()+推导式]
下一篇: python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值