>> 3*7 21 >>>..." />

Python中.*和.*?的区别

概要等式运算函数中参数的定义与调用定义函数时*的作用:out定义函数时:**OUTOUT调用函数时,和*均是为了分配参数用的调用函数时:*:调用函数时:**:概要 关于""和"*"两个特殊符号的区别,首先在python中是没有指针的,与C++有很大的不同。等式运算 python中常用的乘法运算符 >>> 3*7 21 >>>...
Python中.*和.*?的区别
概要等式运算函数中参数的定义与调用定义函数时*的作用:out定义函数时:**OUTOUT调用函数时,和*均是为了分配参数用的调用函数时:*:调用函数时:**:

概要
关于""和"*"两个特殊符号的区别,首先在python中是没有指针的,与C++有很大的不同。
等式运算
python中常用的乘法运算符*
>>> 3*7
21
>>> l=[2 * i for i in range(100) ]
>>> l
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,
104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198]

函数中参数的定义与调用
如果在定义函数时,代表收集参数,*代表收集关键字参数。
定义函数时*的作用:
def symbols(*params):
print(params)

out
symbols(1,2,3)
(1,2,3)

此时*是将调用时提供的所有值,放在一个元组里。
这种情况下,在函数定义时的形参里的*params后面,就最好不要再加入别的形参了,比如你定义成 def symbols(*params,x) ,调用的时候symbols(1,2,3),就会报错。因为这样python分不清哪个数据是给params的。如果你非要这么定义也行,不过在调用的时候,必须显示的指出哪个值是给x的。比如symbols(1,2,x=3),通过这种方式调用才不会出错。
定义函数时:**
对于之前参数是*params的情况,symbols并不能传入关键字参数。仍然采取这种方式定义时:会报错
def symbols1(*params):
print(params)

OUT
>>>symbols1(x=1,y=2,z=3)

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: symbols1() got an unexpected keyword argument 'x'

报错
因为*号并不会收集关键字参数。所以需要如下方式修改,采用两个星号:
def symbols2(**params):
print(params)

这样调用symbols2就不会有问题:
OUT
>>> symbols2(x=1,y=2,z=3)

{'z'=3,'x'=1,'y'=2}

以上输出得到一个字典。字典中元素的先后顺序取决于你的环境。
调用函数时,和*均是为了分配参数用的
调用函数时:*:
例如,还是刚刚那个print函数
def symbols(x,y):
print(x)
print(y)

两个形参,如果只想传入一个形参呢
对,“调用函数时分配参数”跟“定义函数时收集参数”,反过来了!
假设你还有一个元组:
params=(1,2)

可以通过如下方式调用symbols函数:
>>> symbols(*params)
就可以输出:

1
2

调用函数时:**:
和上面*时一样,只是分配的是字典。
params={'x':1,'y':2}

可以通过如下方式调用symbols函数:
>>> symbols(**params)
就可以输出:

1
22021-12-07
=是赋值符号——代表将符号右边的值赋给左边的变量。例如:a=10,代表将整型数10赋值给a。==是判断...2021-12-07
mengvlog 阅读 36 次 更新于 2025-09-08 02:16:45 我来答关注问题0
  • 一、功能差异 1. 专业版:PyCharm专业版提供了全面的Python开发功能,包括代码调试、科学工具、专业Web开发支持、Python Web框架、Python分析器、远程开发等。此外,还提供了大量插件和工具,支持企业级的开发需求和代码管理。2. 社区版:相比专业版,社区版的功能相对基础,但依然能满足大部分Python开发者...

  •  文暄生活科普 Python中encode和encoding的区别是什么?

    总结一下,`encode()`和`encoding`的主要区别在于应用领域:`encode()`用于字符串转换,通常在构建网络请求或处理特定编码需求时使用;而`encoding`用于文件操作,确保文件正确读取和写入。理解这两个概念有助于更高效地使用Python进行数据处理和网络编程。本文对Python中的encode和encoding进行了简明的说明,...

  •  翡希信息咨询 Python2 中 range 和 xrange 的区别?

    Python2 中 range 和 xrange 的主要区别如下:生成方式:range 函数生成的是列表,会一次性创建包含 [start, stop) 区间内的所有整数。xrange 函数生成的是一个生成器对象,每次迭代时计算返回结果。内存使用:range 由于生成的是列表,会占用较多内存,尤其是当生成的整数序列较大时。xrange 由于生成的...

  •  誉祥祥知识 pycharm?专业版?和?社区版有什么区别

    专业版:功能丰富,专为Python和Web开发设计,支持多种框架和技术,还包括JavaScript、CSS等多种语言的支持。此外,它还提供远程开发、Python Profiler、数据库和SQL支持,以及UML和SQLAlchemy Diagrams等高级功能。社区版:功能相对基础,但专为Python开发服务,配备了智能编辑器、调试器、重构、检查、VCS集成...

  •  是鹅子吖 python中//和%的区别?

    python中//和%的区别如下:1、//表示向下取整的除法,返回的是整数类型,例如3//2=1,6.0//4 = 1。2、%表示取模,返回的是整数类型,例如4%2=0,5%2=1。python语言的重要性 Python语言以其简洁、直观的语法而闻名。相比其他编程语言,Python的语法更加简单易懂,容易上手。这使得初学者能够...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部