목차
回复内容:
백엔드 개발 파이썬 튜토리얼 元组的reference前加个星号是什么意思?

元组的reference前加个星号是什么意思?

Jun 06, 2016 pm 04:24 PM
height screen

<span class="n">rect</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">screen</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">screen</span><span class="o">.</span><span class="n">height</span><span class="p">())</span>  
<span class="n">pixbuf</span> <span class="o">=</span> <span class="n">Gdk</span><span class="o">.</span><span class="n">pixbuf_get_from_window</span><span class="p">(</span><span class="n">rootwin</span><span class="p">,</span> <span class="o">*</span><span class="n">rect</span><span class="p">)</span><span class="c">#其中*rect是什么?</span>
로그인 후 복사

回复内容:

我不会用PyGObject, 纯讨论星号参数这个语法.

类似问题(也许对你有帮助):
定义函数def func(**kwargs):print kwargs调用函数的时候 一定要func(a=1,b=2,c=3)这样吗?dict_t={'a':1,'b':2,'c':3}不能直接传字典吗?例如func(dict_t)。有什么好方法吗?

Python 参数知识(变量前加星号的意义)



咱们先搞定星号参数的含义以及2个例子:

在参数名之前使用1个星号,就是让函数接受任意多的位置参数。
2个星号就是接受任意多的关键字参数。


位置参数的举例:
假设你有这么个需求:把某函数接收到的除了第一个参数之外的所有参数输出。
元组的reference前加个星号是什么意思?


关键字参数的举例:
不管你传入多少个关键字参数, 我都能在kw里找到. 元组的reference前加个星号是什么意思?




接着来搞定这个类似于你在问题中的补充资料中的例子:


下面这个例子接受任意多的位置参数, 只输出第一个
元组的reference前加个星号是什么意思?(这里的 s 的类型是元组)


咱们定义一个新元组,待会扔给mean函数。
元组的reference前加个星号是什么意思?

2种用法的区别: 元组的reference前加个星号是什么意思?

元组的reference前加个星号是什么意思?可以看出,用了星号之后,就把元组 a 给解包(unpack)了。拆成一个个参数扔进去了。
上面这个例子等价于: 元组的reference前加个星号是什么意思?




================== 2013-2-26更新 ================

元组的reference前加个星号是什么意思?
s 是元组, 所以值不可修改。
我这里企图把位置参数里的第1个的值修改成5,然后输出。


使用元组看看:
元组的reference前加个星号是什么意思? 元组的reference前加个星号是什么意思?
我们换成列表看看: 元组的reference前加个星号是什么意思?
用字符串看看:
元组的reference前加个星号是什么意思?
我们这里拆了列表,元组,字符串变成位置参数再传进去。
可以看到不论如何。s 都是元组。
存储位置参数的这个 s 变量的类型并不取决于传入的参数的类型。




================= 再随便多写一些例子 =================:
普通函数:
元组的reference前加个星号是什么意思?
文艺函数: 元组的reference前加个星号是什么意思?





mean 遍历输出所有位置参数。s 是元组,别忘了。
咱们拆一下 列表 和 字符串。 元组的reference前加个星号是什么意思?
拆元组: 元组的reference前加个星号是什么意思?


拆字典: 元组的reference前加个星号是什么意思? 元组的reference前加个星号是什么意思?


拆字典它只会把[键]传进去,你是取不到值的。 元组的reference前加个星号是什么意思?



====== 要接受拆字典的值。函数形参用2个星号就行了。=======

这里的意思是: 把所有的关键字参数都扔给s (不包括位置参数)
元组的reference前加个星号是什么意思? 元组的reference前加个星号是什么意思?用函数时,
c前面的2个星号只是代表把 c 拆成关键字参数形式。

用的时候我们把字典拆成了关键字参数。
而函数接收的也是关键字参数。所以这个不会报错。


等价于这么用: 元组的reference前加个星号是什么意思?(没报错吧哈哈。)



如果你用函数的时候只给了1个星号:
元组的reference前加个星号是什么意思?
或是不给星号:
元组的reference前加个星号是什么意思?都是会报错的。


为什么??

放1个星号:
字典前面放个1个星号的确是拆开的意思。
1个星号拆字典会只是传入[键]。之前的一个例子证明过了。

问题是我们的函数mean它只接受关键字参数(回顾一下我们前面对mean的定义): 元组的reference前加个星号是什么意思?s 里面啥也没有啊。 输出啥? 报错!


不放星号:
不放星号就代表你把那个字典直接扔进去了。
问题是函数形参**s只接受关键字参数。
s 里面还是啥也没有, 报错!



(所有的举例所使用到的 函数名 参数名 都是随便取的, 没有什么特殊意义.)
感觉自己举例的还不是很好,如果哪里把你弄迷糊了。
欢迎在评论区讨论. :)



扩展阅读环节:

StackOverflow 上解释星号语法的问题:
syntax - Python: Once and for all. What does the Star operator mean in Python?

引用传值的问题:
Python: How do I pass a variable by reference? 表示把这个参数展开传进去。等价于:
pixbuf = Gdk.pixbuf_get_from_window(rootwin, 0, 0, screen.width(), screen.height())
로그인 후 복사
调用(caller)
func(*sequence) Pass all objects in sequence as individual positional arguments
seq = [1,2,3]
func(*seq) -> func(1, 2, 3)

func(**dict) Pass all key/value pairs in dict as individual keyword arguments
dict = {'a' = 1, 'b' = 2}
func(*dict) -> func(a = 1, b = 2)

函数定义的
def func(*name) Matches and collects remaining positional arguments in a tuple
func(1, 2, 3) -> name = [1, 2, 3]

def func(**name) Matches and collects remaining keyword arguments in a dictionary
func(a = 1, b= 2) -> dict = {'a' = 1, 'b' = 2}

可参考 Chapter 18. Arguments python里星号有两种意思
1. 定义函数时
一般情况下,函数的参数接受指定个数的参数,比如
<span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span>
    <span class="k">print</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span>
로그인 후 복사
推荐一篇post:Understanding '*', '*args', '**' and '**kwargs' >>> def test(*args, **kwargs):
... print args, kwargs

>>>a={"a":1, "b":2}

>>> test(a)
({'a': 1, 'b': 2},) {}
>>> test(*a) #这里等同于test('a', 'b')
('a', 'b') {}
>>> test(**a) #这里等同于test(a=1, b=2)
() {'a': 1, 'b': 2}

一个星号就是把一个序列拆解传入,如果变量本身是字典,会退化成key的序列。
两个星号就是把key-value拆解传入。
姑且就当是语法糖吧。 搬运工:1.2 解压可迭代对象赋值给多个变量
这个解压非常dedicate,具有很多优雅的技巧。
总结如下:
(1)
完全不需要tem中间变量的交换:
a,b =b,a
(2)
有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况Python并没有提供特殊的语法。 但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。
>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> _, shares, price, _ = data
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

유출된 셀카 디스플레이가 이전에 저렴했던 카메라 라인에 복잡성을 추가함에 따라 Fujifilm X-M5 가격 기대치가 높아졌습니다. 유출된 셀카 디스플레이가 이전에 저렴했던 카메라 라인에 복잡성을 추가함에 따라 Fujifilm X-M5 가격 기대치가 높아졌습니다. Sep 07, 2024 am 09:34 AM

Fujifilm 팬들은 최근 X-T50의 전망에 매우 흥분했습니다. X-T50은 1,000달러 미만 APS-C 카테고리에서 꽤 인기를 끌었던 예산 중심의 Fujifilm X-T30 II의 재출시를 선보였기 때문입니다. 안타깝게도 후지필름 X-T50이 출시되면서

Dasung Paperlike Color 12: 컬러 E Ink 터치스크린을 탑재한 모니터, 이제 전 세계적으로 출시됩니다. Dasung Paperlike Color 12: 컬러 E Ink 터치스크린을 탑재한 모니터, 이제 전 세계적으로 출시됩니다. Jul 31, 2024 pm 08:35 PM

화면 대각선 12인치의 Dasung Paperlike Color가 출시되었습니다. 몇 달 전에 발표된 이 모델은 2,560 x 1,600의 매우 높은 해상도를 제공하므로 특히 상대적인 측면에서 높은 수준의 선명도를 제공합니다.

Linux 화면 명령을 사용하는 방법 Linux 화면 명령을 사용하는 방법 May 23, 2023 pm 06:17 PM

1. screen 명령 소개 Screen은 여러 프로세스(보통 대화형 셸) 간에 물리적 터미널을 다중화하는 전체 화면 창 관리자입니다. 각 가상 터미널은 DECVT100 터미널의 기능과 ANSIX3의 여러 제어 기능을 제공합니다. 64(ISO6429) 및 ISO2022 표준(예: 줄 삽입/삭제 및 여러 문자 집합 지원) 각 가상 터미널에는 스크롤백 기록 버퍼와 사용자가 창 간에 텍스트 영역을 이동할 수 있는 복사-붙여넣기 메커니즘이 있습니다. screen이 호출되면 셸(또는 지정된 명령)이 포함된 창을 만든 다음 프로그램을 정상적으로 사용할 수 있도록 방해가 되지 않습니다. 그런 다음 언제든지

Google Pixel 8 디스플레이 문제: 수리 프로그램으로 3년 무료 서비스 가능 Google Pixel 8 디스플레이 문제: 수리 프로그램으로 3년 무료 서비스 가능 Jun 15, 2024 pm 06:50 PM

Google Pixel 8(Amazon에서 약 513유로, 기간 한정 거래)이 출시된 이후 디스플레이의 수직선에 대해 불평하는 사용자의 신고 수가 증가했습니다. 이는 색상과 색상이 다른 방식으로 나타날 수 있습니다.

CSS 차원 속성에 대한 자세한 설명: 높이 및 너비 CSS 차원 속성에 대한 자세한 설명: 높이 및 너비 Oct 21, 2023 pm 12:42 PM

CSS 차원 속성에 대한 자세한 설명: 높이 및 너비 프런트 엔드 개발에서 CSS는 강력한 스타일 정의 언어입니다. 그 중 높이와 너비는 요소의 높이와 너비를 정의하는 데 사용되는 가장 기본적인 두 가지 치수 속성입니다. 이 기사에서는 이 두 가지 속성을 자세히 분석하고 구체적인 코드 예제를 제공합니다. 1. 높이 속성 높이 속성은 요소의 높이를 정의하는 데 사용됩니다. 픽셀, 백분율 또는

새로운 4K 프로젝터 JMGO N1S Pro, 스마트 기능과 눈 보호 기능을 갖춘 저렴한 가격 출시 새로운 4K 프로젝터 JMGO N1S Pro, 스마트 기능과 눈 보호 기능을 갖춘 저렴한 가격 출시 Sep 10, 2024 am 09:30 AM

N1S Pro는 JMGO의 또 다른 프로젝터로 현재도 사용 가능합니다. 구체적으로는 Amazon에서 US$1999의 가격으로 제공됩니다. 4K 프로젝터는 JMGO에서 직접 판매되며 Amazon에서 배송을 직접 처리합니다. 해당 모델은 현재 재고가 있습니다

CentOS 6.5에 Screen을 설치하는 단계 CentOS 6.5에 Screen을 설치하는 단계 Jan 01, 2024 am 11:17 AM

우리는 종종 이 문제에 직면합니다. SSH를 사용하여 원격 Linux 서버에 로그인하고 일부 장기 작업을 실행하지만 네트워크 불안정으로 인해 작업이 중간에 실패합니다. 명령이 제출된 후 로컬에서 터미널 창을 닫거나 네트워크 연결을 끊음으로써 명령이 방해받는 것을 방지하는 방법은 무엇입니까? Screen은 명령줄 터미널 전환을 위해 GNU 프로젝트에서 개발한 무료 소프트웨어입니다. 사용자는 이 소프트웨어를 사용하여 여러 로컬 또는 원격 명령줄 세션에 동시에 연결하고 자유롭게 전환할 수 있습니다. Screen은 창 관리자의 명령줄 인터페이스 버전으로 생각할 수 있습니다. 여러 세션을 관리하기 위한 통합 인터페이스와 해당 기능을 제공합니다. 방법: 1. YUM 소스 #yumlistscreen에 화면 설치 패키지가 있는지 확인하세요.

jQuery는 요소의 높이 속성을 빠르게 제거합니다. jQuery는 요소의 높이 속성을 빠르게 제거합니다. Feb 27, 2024 pm 02:09 PM

jQuery는 웹 개발에 널리 사용되는 JavaScript 라이브러리로 개발자에게 웹 페이지 요소를 조작하고 처리할 수 있는 다양한 편리한 방법을 제공합니다. 실제 개발에서는 웹페이지 요소의 속성을 조작해야 하는 경우가 많습니다. 일반적인 요구사항 중 하나는 요소의 높이 속성을 제거하는 것입니다. 이 기사에서는 jQuery를 사용하여 요소의 높이 속성을 빠르게 제거하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 요소의 높이 속성을 제거하려면 jQu를 사용할 수 있습니다.

See all articles