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

《疯狂Python讲义》值传递的细节

函数的参数包含着整个程序的规范性,之前还是没有那么去注意重要的细节,读完书中函数值传递篇章,还是有所收获的。

参数有两种形式,一种是形参一种是实参,形参可以理解为实参的载体,函数当中的关键词也是描述这个参数的,一个简单的函数

def demo(keyword,specialword):print("keyword is":, keyword)return 2 * keyword#传统的方式,根据位置传递参数
print(demo(33,44)
#根据关键字参数传递方式
print(demo(keyword=33,specialword = 44)
#使用关键字参数可以交换位
print(demo(specialword = 33, keyword= 22)
#但是这里要注意的就是当编写关键字的时候很有可能会编写错误,而且造成冗长的函数头

#如果希望能在调用函数的时候,混合使用关键字参数和位置参数,关键字参数必须在位置参数之后

第二个就是函数编写习惯,由于在编写函数的时候,会传入一些默认值,为确保在编写时候就算没有传入参数也能让函数顺利跑起来

def demo1(keyword = 233, specialword = 232):print("keyword is:", keyword,specialword)
#完全默认
demo1()
#只有后面参数默认
demo(234)
#两个参数都不默认和只有一个是用默认跟前面的差不多

传入的参数不能同时传入多个参数到一个位置参数里面。

重头戏:逆收集

传入的参数不可能都是一两个单个的数,有时会将一些列表、字典或者二维元祖进行分析,python允许在形参前面添加一个星号,可以接收多个参数值,多个参数值被当成元祖传入。

def test(a, *books):print(books)for i in books:print(i)#输出整数变量a的值print(a)
#调用test()函数
test(2, "jijaoh","fagfag")

逆向参数收集指在程序已有列表、元祖、字典等对象前提下,将元素拆开后传给函数的参数。

def test(name, message):print("usename is ", name)print("welcome!", message)
my_list = ["fatal", "welcome to our python club"]
test(*my_list)

字典也支持逆向收集,字典将会以关键字参数形式传入。

def bar(book, price, desc):print(book, "the books price is :", price)
my_dict = zip(for i in range(26), for i in alpha())
bar(**my_dict)

第二点:传入的参数是另外的价钱

这个就是传入的参数修改不是依据参数修改,而且是修改两个额外的空间以实现当前的算法要求。

不管什么类型参数,在pyton函数中对参数直接使用“=”符号赋值是没有用的,不能改变参数。

需要让函数修改某些数据,可以通过将数据包装成列表、字典等可变对象,通过列表、字典自带的方法进行修改。

这里就要谈到变量作用域

提供三个工具函数组成的变量函数,global():返回全局范围内的所有变量。locals():函数返回当前局部范围内的所有变量组成的。vars():获取指定对象范围内的所有变量组成的。

def test():age = 21;print(age)#访问函数局部分为内:“变量 数组”print(locals())#通过locals函数局部范围内“变量数组”改变age变量

全局变量;可在函数中声明加上global name声明条件。

http://www.lryc.cn/news/64497.html

相关文章:

  • 【7. ROS 中的 IMU 惯性测量单元消息包】
  • pcie m.2固态硬盘装机后无法识别到启动盘
  • Java Web应用开发 ——第四章:JavaBean技术测验
  • CTF权威指南 笔记 -第二章二进制文件- 2.4 -动态链接
  • C++:计算机操作系统:多线程:高并发中的线程
  • 大数据Doris(十一):Aggregate 数据模型
  • osg::Drawable类通过setDrawCallback函数设置回调函数的说明
  • Python基础合集 练习17(类与对象)
  • 再多猜一次就爆炸(小黑子误入)
  • 图像超分辨率简单介绍
  • 【Liunx】进程的程序替换——自定义编写极简版shell
  • c++标准模板(STL)(std::array)(三)
  • c#笔记-创建一个项目
  • Photoshop如何使用图像调色之实例演示?
  • IDEA中使用Git提交代码提示:您即将把CRLF行分隔符提交到Gt仓库。 建议将core.autocrlf Git特性设置为trUe,以免发生行分隔符问题。
  • ArduPilot之开源代码LibrarySketches设计
  • 第一章:概述
  • MySQL --- DDL图形化工具表结构操作
  • 归一化处理(2023寒假每日一题 14)
  • 无公网IP,外网远程连接MySQL数据库
  • OJ刷题 第十四篇(递归较多)
  • FileZilla读取目录列表失败(vsftpd被动模式passive mode部署不正确)
  • 【Java面试八股文】数据库篇
  • Android Glide加载图片、网络监听、设置资源监听
  • 等保定级报告模版
  • 计算机组成原理4.2.2汉明码
  • JavaScript全解析——本地存储的概念、用法详解
  • 对象浅拷贝的5种方式
  • Java每日一练(20230504)
  • 【深度学习】计算机视觉(13)——模型评价及结果记录