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

hspice2016安装教程

试装系统:win10 64bit 安装包路径和安装路径最好都不要出现中文,一般选择默认安装在C盘。 1.解压安装包压缩文件。 2.以管理员身份运行hspice_vL-2016.03-2_win.exe。 3.点击“Next”。 4.选择“I accept”,然后点击“Next”。 5.点击“Next”。 6.一般默认安装路径即可,然后点击“Next”。 7.点击“Next”. 8.点击“Next”。 9.正...

谢谢关注“小鱼教你模数电”,各平台同号 1万+

VTK四视图联动避坑指南:解决vtkImagePlaneWidget窗宽窗位同步与切片序号更新的那些坑

本文详细解析了VTK四视图联动开发中的关键技术点与常见问题,包括切片位置同步、窗宽窗位同步的实现原理及回调机制设计。针对开发中遇到的回调事件不触发、渲染性能低下等问题,提供了实用的解决方案和优化技巧,帮助开发者高效构建医学影像和科学可视化应用。

weixin_42638178的博客 391

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

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

weixin_39628594的博客 395

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

一名全栈小白的博客 1万+

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万+

Groq LPU架构解析:确定性线性处理器如何重塑AI推理

语言模型推理正从‘通用算力堆叠’转向‘确定性硬件定制’。LPU(Language Processing Unit)作为一种面向大模型推理的领域专用处理器,摒弃传统GPU的并行调度、多级缓存与动态执行范式,转而采用空间计算、静态编译与单线程线性流水线设计,实现纳秒级延迟可控性和92%+的HBM带宽利用率。其核心价值在于将模型结构、内存访问、时序路径全部在编译期固化,从而消除运行时抖动——这正是当前MLOps工程师应对A100显存碎片、vLLM调度开销与P99延迟不稳等痛点的关键技术路径。Groq 3 LPU与

weixin_30599521的博客 325

手把手教你读懂蓝牙BQB射频测试报告:以PRBS9为例的实战分析

本文以蓝牙BQB射频测试中的PRBS9信号为例,提供了一份实战分析指南。文章深入解读了输出功率、调制特性、邻道泄漏等核心测试项,并分享了信号分析仪操作技巧、测试环境搭建要点及设备选型建议,旨在帮助工程师精准解读报告,高效定位问题,确保产品顺利通过认证。

weixin_29289821的博客 261

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

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

一名机电研究生的博客 5745

基于STM32设计的数字电子秤

当前项目是采用采用STM32+称重模块+OLED实现了简单的电子秤项目,称重模块上采用24位的ADC芯片,精度较高。实现了称重,校准、去皮等功能。

1万+

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

Arcgis加载在线地图(内涵各种在线地图)

这三个在线地图是最常用的在线地图,其他几个类型的在线地图请自行查看。,加载出在线图层说明连接成功,点击。1、首先打开Arcgis,找到。

爱吃雪糕的小布丁的博客 1万+

【007】C++编程必知:原码、补码、反码的全面解读

计算机存储的是数据的补码。原码:计算机中对数字的二进制定点表示方法。比如123的原码是0111 1011。无符号数:原码=反码=补码。有符号数:要分正数和负数,正数的最高位为0,负数的最高位为1。其中,正数的原码、反码、补码都是相同的;负数的反码等于原码的符号数(最高位)不变,其他位取反;补码等于反码+1。比如:-123的原码是1111 1011,反码为1000 0100,补码为1000 0101。原码、补码和反码都是用于计算机表示有符号整数的方法。

Lion_Long的博客 2920

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

a

Web_Student的博客 510

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

头歌python 函数自学引导

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

2401_87914305的博客 2089

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

t8t359的博客 1588

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

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

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、付费专栏及课程。

余额充值