百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

干货丨四年python开发在自定义函数中应用参数传递的心得

off999 2024-12-03 00:17 24 浏览 0 评论

对于Python中的参数,可以有如下三种:

  • 位置和关键字参数
  • 任意数量的位置参数
  • 任意数量的关键字参数。

我们知道对于Python中的名字的解析被称为LGB规则,有以下三点
1.当在函数中使用一个无限制的名字时,Python依次查找三个作用域:

  • 局部(Local)
  • 全局(Global)
  • 内置(Built-in)

在第一个发现名字的位置停止。


2.在函数中赋值一个名字时,Python总在局部作用域中生成或者改变它,除非在函数中对它进行了global的声明。


3.在函数外部时,局部作用域与全局作用域等效,都是同一个模块的名字空间。
这里主要讨论一下
在自定义函数中应用参数传递的实现,代码如下:

x=1
list=[1,2]
def func(x,y):
    x=2
    y[0]='A'
func(x,list)
print('调用函数后传入的参数变化为:',x,list))
调用函数后传入的参数变化为: 1 ['A', 2]
Process finished with exit code 0

unc()对x和被y引用的对象中的组件赋值,

x是函数作用域中的局部名字

第1个赋值对调用者没有影响,

数y也是个局部的名字

但传递了y[0],这是一个可变的对象,最后就把list中的第一个位置换掉了!
那我们思考一下,我还想换掉x=1,既利用模块中的x=2,该如何操作。

如果是如下代码块,就会报错:


x=1
list=[1,2]
def func(x):
    global x
    x=2
func()
print('调用函数后传入的参数变化为:',x)
global x
SyntaxError: name 'x' is parameter and global
Process finished with exit code 1

我们看到了报错。语法错误:x既是参数又是全局变量。这样是不对的,x是不能既做变量又做参数的。
那么我们换一种方式,看看是否可以。代码如下:

x=1
list=[1,2]
def func():
    global x
    x=2
    y[0]='A'
func(x,list)
print('调用函数后传入的参数变化为:',x)
func(x,list)
TypeError: func() takes 0 positional arguments but 2 were given
Process finished with exit code 1

好的,又出错了。

对类型的无效操作:

func()可以接收的位置参数是0个,但却接收到了2个参数(x,list)。这样也是不对的,因为我们在def func()时候,func()中并没有位置参数,而我们在调用func()时,却代入了x,list两个参数,就会报错。

综上所述:fun(x)里有参数x时,后面模块内就不可以跟global x(全局变量),但是func()里无参数x时,后面可以跟global x,把x定义成全局变量,但是呢又有个问题,就是后面调用函数func()时,不能写成func(x),否则又会报错TypeError,是由于前面是func(),故可接受参数为0

那么该如何操作,到达我们想一样换掉x=1,使得x=2呢?这里我运用了两个def func。代码如下:

x=1
list=[1,2]
def func1():
    global x
    x=2
func1()
def func2(y):
    y[0]='A'
func2(list)
print('调用函数参数的结果:',x,list)
调用函数参数的结果: 2 ['A', 2]
Process finished with exit code 0

最后多说一句,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

相关推荐

笔记本电脑没声音是什么原因

笔记本电脑没有声音的原因是:1.声音是否被调到最小了。2.音频是否被禁用了。3.声卡驱动是不是有问题。4.如果电脑既没有声音也没有小喇叭的图标,则表示电脑的音频设备未启用。笔记本电脑没有声音的原因是:...

melogin路由器设置登录入口(192.168.1.1直接进入)

melogincn路由器的设置步骤如下第一、路由器线路连接1、请把你的.水星双频路由器上的WAN接口,用网线连接到猫的网口。如果你家宽带没有用到猫,就把入户的宽带网线,插在路由器的WAN口。2、把你的...

如何优化电脑性能
如何优化电脑性能

可以通过以下几个步骤来提高电脑运行速度和游戏流畅度:1.清理垃圾文件和无用程序,可以使用系统自带的清理工具或第三方软件;2.关闭开机自启动项,只保留必要的程序开机启动;3.升级硬件,比如增加内存、更换硬盘等;4.优化系统设置,如关闭不必要的...

2026-01-02 06:51 off999

ie8以上版本浏览器(ie8及以上版本浏览器)

浏览器IE8版本以上的意思就是当浏览的网页不支持低版本的IE浏览器,就会提示需要版本较高的IE8以上的版本才可以打开浏览网页。IE浏览器是美国微软公司推出的一款网页浏览器,原名MicrosoftIn...

适合电脑的应用商店(电脑最好的应用商店)

1.MicrosoftToDo推荐理由:微软出品,必属精品2.Microsoft便笺推荐理由:又是一款微软官方出品的良心免费应用,相比MicrosoftToDo,Microsoft便笺更加...

家里无线网连上不能用(家里无线网不能使用)

WiFi连上但不能使用可能有多种原因。以下是一些常见问题和解决方法:1.路由器问题:首先要确认路由器是否正常工作。可以尝试重启路由器,等待几分钟后再次连接并测试。2.网络设置问题:检查设备上的网络...

低价香港服务器(香港服务器推荐性价比)

香港最好的服务器是双向cn2+移动+联通三线优化直连的,性能配置都非常高,而且速度还非常稳定。 香港服务器的使用方法:1、首先需要选择一个服务商进行购买服务器;2、购买成功后,可在本地计算机...

免费360清理大师官方版(华为自带清理软件)

挺好用的。它可以清除你手机的里面的垃圾,检测和修复软件安全性。还有一些漏洞垃圾,你可以试着对比和使用,功效和针对性比较强。您杀毒没有效果的原因可能是您的安全软件版本过旧导致的,建议您使用最新版的腾讯手...

万能解压器安卓版(万能解压器官方下载)

是一款手机文件的助手。万能解压器手机版。专注于快速解压和压缩的文件管理工具!支持ZIP,RAR,7Z,TAR,ZIPX,GZIP,JAR等压缩和解压文件格式。是超好用、超便捷的解压软件!支持在手机上将...

cad看图(cad看图王)

以下是一些CAD看图的方法和技巧:1.放大/缩小:使用滚轮或放大镜工具可以方便地放大或缩小绘图。2.平移:使用平移工具可以在不改变视角的情况下将绘图向上、向下、向左或向右移动。3.旋转:使用旋转...

联想笔记本电脑装系统教程(联想笔记本装系统教程win10)
  • 联想笔记本电脑装系统教程(联想笔记本装系统教程win10)
  • 联想笔记本电脑装系统教程(联想笔记本装系统教程win10)
  • 联想笔记本电脑装系统教程(联想笔记本装系统教程win10)
  • 联想笔记本电脑装系统教程(联想笔记本装系统教程win10)
dell笔记本售后服务电话是多少
dell笔记本售后服务电话是多少

以下为dell售后服务点A:戴尔笔记本电脑维修点地址:上海市长宁区长宁路1027号兆丰广场5层 B:戴尔笔记本电脑维修点地址:上海市徐汇区漕溪北路45号 C:戴尔笔记本电脑维修点地址:上海市徐汇区漕溪路250号银海大厦1...

2026-01-02 02:03 off999

如何找回浏览器(如何找回浏览器删除记录)

如果您的浏览器出现了问题,可以尝试以下方法来恢复浏览器:1.重新启动浏览器:关闭浏览器窗口,再重新打开浏览器,看是否能够解决问题。2.清除浏览器缓存:浏览器缓存可能会导致浏览器出现问题,可以尝试清...

应用备份还原app下载(应用备份与恢复下载)

如果您已经将手机上的数据备份到电脑,希望从电脑恢复到手机,建议您:1.电脑中安装Kies软件。注:若使用的是安卓4.3操作系统,电脑中需要安装Kies3软件。2.将手机与电脑通过数据线连接,打开Kie...

office2013激活向导(microsoft office激活导向)
office2013激活向导(microsoft office激活导向)

这是没有正常激活导致的,解决方法如下:1、下载正确的microsoftoffice到桌面上,右键单击从下拉菜单中选择解压到当前文件夹。2、双击桌面上的快捷方式,打开该应用程序,切换到mian选项卡。3、接着点击ez-activator按钮...

2026-01-02 00:51 off999

取消回复欢迎 发表评论: