* * 콰리스 args 및 사용

그래서 나는 어려움을 总监和首席信息官完全了解 '' 와 '' args 콰리스.

지금까지 나는 것을 알게 된다.

  • '-' = * args 로 위치 인수만 인수만 목록
  • '-' * 콰리스 그 값은 키 값을 별도의 키워드 = 사전 인수 및 이러한 인수만 될 것이다.

내가 어떤 프로그래밍 작업을 도움됐네 .용 don& 이해하지 # 39 이 됩니다.

아마.

내 생각엔 열거합니다 함수의 인수로 입력 및 사전을 와일드카드로, 동시에 통과할 수 있어, 그래서 모든 인수?

간단한 예를 있습니까 '와' '' 이 방법을 설명하기 위해 사용되는 args 콰리스?

또한, 그냥 내가 찾은 자습서는 사용되는 &quot *&quot. 및 변수 이름을.

  • Args '와' '그냥' 있다 '또는' 와 ' * args 콰리스 자리표시자 당근이지를 사용하고 있는가' 를 콰리스 코드?
질문에 대한 의견 (6)
해결책

[구문은 ' '와' '] [1]. 단지 그 이름을 args '와' '' s no. # 39 하드 요구 사항을 there& 콰리스 규칙에 따라 이를 사용할 수 있습니다.

  • Args ',' # 39 you& 때 사용하는 것과 관련, 즉 데이터베이스에구성원을 함수은 시용되는 인수만 전달될 수 있는지 알고 있는 임의의 개수의 인수만 데이터베이스에구성원을 함수은 전달하십시오 있습니다. 예를 들면 다음과 같습니다.
>>> def print_everything(*args):
        for count, thing in enumerate(args):
...         print( '{0}. {1}'.format(count, thing))
...
>>> print_everything('apple', 'banana', 'cabbage')
0. apple
1. banana
2. cabbage

마찬가지로, '*' 라는 주장은 미리 정의하지 콰리스 처리할 수 있습니다.

>>> def table_things(**kwargs):
...     for name, value in kwargs.items():
...         print( '{0} = {1}'.format(name, value))
...
>>> table_things(apple = 'fruit', cabbage = 'vegetable')
cabbage = vegetable
apple = fruit

이러한 이름이 너무 인수만 함께 사용할 수 있습니다. 인수 후 모든 것을 직접 전달된 값을 먼저 확보하십시오 아무도요 args '와' 콰리스 ''. 먼저 명명된 인수만 따라오렴 명단요 예를 들면 다음과 같습니다.

def table_things(titlestring, **kwargs)

하지만 모두 같은 기능을 사용할 수도 있습니다 '' 정의 '' 콰리스 args 이전에 이루어져야 합니다.

'와' ' 구문을 ' 함수를 호출할 때 사용할 수도 있습니다. 예를 들면 다음과 같습니다.

>>> def print_three_things(a, b, c):
...     print( 'a = {0}, b = {1}, c = {2}'.format(a,b,c))
...
>>> mylist = ['aardvark', 'baboon', 'cat']
>>> print_three_things(*mylist)
a = aardvark, b = baboon, c = cat

이 경우 가져와 볼 수 있듯이 목록 (또는 튜플) 의 항목 및 풀 거잖나. 이를 통해 이 같은 it 일치시킵니다 인수만 에 있다. 물론, 외상때문에 a '에 있는 *' 함수 정의 및 두 함수 호출.

[1]: http://docs.python.org/tutorial/controlflow.html # 임의의 인수 목록

해설 (7)

한 곳 '와' '사용' args 콰리스 유용하며 캐비닛용입니다 하위 클래스화.

class Foo(object):
    def __init__(self, value1, value2):
        # do something with the values
        print value1, value2

class MyFoo(Foo):
    def __init__(self, *args, **kwargs):
        # do something else, don't care about the args
        print 'myfoo'
        super(MyFoo, self).__init__(*args, **kwargs)

이 동작은 확장할 수 있는 방법, Foo 클래스용 몰라도 대해 너무 Foo. 이 경우 매우 편리하게 사용할 수 있는 프로그래밍 충족되었으며 apiu 변경될 수 있습니다. 그냥 패스 마이포 모든 인수만 Foo) 로 구분된다.

해설 (8)

39 의 예를 들어 here& 사용하는 3 개의 서로 다른 유형의 매개변수입니다.

def func(required_arg, *args, **kwargs):
    # required_arg is a positional-only parameter.
    print required_arg

    # args is a tuple of positional arguments,
    # because the parameter name has * prepended.
    if args: # If args is not empty.
        print args

    # kwargs is a dictionary of keyword arguments,
    # because the parameter name has ** prepended.
    if kwargs: # If kwargs is not empty.
        print kwargs

>>> func()
Traceback (most recent call last):
  File "", line 1, in 
TypeError: func() takes at least 1 argument (0 given)

>>> func("required argument")
required argument

>>> func("required argument", 1, 2, '3')
required argument
(1, 2, '3')

>>> func("required argument", 1, 2, '3', keyword1=4, keyword2="foo")
required argument
(1, 2, '3')
{'keyword2': 'foo', 'keyword1': 4}
해설 (0)

39 곳, 내가 제일 here& *' 구문을 사용하여 donatelli Webb& 같이 's # 39 의 최종 예:

mynum = 1000
mystr = 'Hello World!'
print "{mystr} New-style formatting is {mynum}x more fun!".format(**locals())

39 의 경우, i& it& # 39 m 확신하지 못하고 있지만, 그냥 스스로 이름을 이용해 빠른 심히 it& # 39 에 비해 훨씬 쉽게 입력할 수 있습니다!

해설 (8)
    • 콰리스 사용할 때 한 경우를 args 및 기능을 할 수 있는 임의의 인수만 동의하십시오 먹어서나 래퍼 (데코레이터 같은) 함수에 대한 랩된 통과할 수 있다. 예를 들어, 그 함수의 반환 값의 랩된 기술입니까 인수 및 간단한 데코레이터 인쇄합니다.
def mydecorator( f ):
   @functools.wraps( f )
   def wrapper( *args, **kwargs ):
      print "Calling f", args, kwargs
      v = f( *args, **kwargs )
      print "f returned", v
      return v
   return wrapper
해설 (0)
    • 콰리스 특수 매직 args 및 파이썬 기능이 있다. 생각할 수 있는 기능을 인수 알 수 있다. 예를 들어, 알 수 있는 기능을 가지고 싶은 이유가 어쨌건 거액을 숫자 (진실이며당신이 don& # 39, t want to use the sum 내장 함수). 그래서 이 기능을 쓸 수 있습니다.
def sumFunction(*args):
  result = 0
  for x in args:
    result += x
  return result

그리고 다음과 같은 사용한다. 섬풍크션 (3.4,6.3,6.8,9).

  • 콰리스 디프렌트 기능을 가지고 있다. * 콰리스 임의의 함수 및 인수를 지정할 수 있는 키워드 이를 딕토나리 액세스할 수 있습니다.

7 317 {{{000}}}

호출하십시오 섬풍크션 (text = foo&quot ";) foo 인쇄합니다.

해설 (0)

상상해 보라, t want you have a # 39 확장하지만 함수은 don& 수를 제한하는 매개변수입니다 걸린다. 예:

>>> import operator
>>> def multiply(*args):
...  return reduce(operator.mul, args)

그럼 이 기능을 사용하여 다음과 같습니다.

>>> multiply(1,2,3)
6

or

>>> numbers = [1,2,3]
>>> multiply(*numbers)
6
해설 (0)

이름은 '' 와 '' 또는 '*' 이 규칙에 따라 args 콰리스 kw 이다. 이 우리를 더욱 쉽게 읽을 수 있도록 각 other& # 39 의 코드

이 제품을 사용할 때 구조체입니다 모듈에서는 한 곳에 있다.

튜플 () '는' () '는' 스트라우스트런팩 되돌려줍니다 스트라우치스파크 가변적입니다 인수만 수 있다는 것입니다. 데이터를 조작하기 위한 법안을 통과시킬 수 있어 편리하게 이용할 때 튜플 () '' 스트라커스파크 eg.

tuple_of_data = struct.unpack(format_str, data)
... manipulate the data
new_data = struct.pack(format_str, *tuple_of_data)

당신이 약간만이라도 없이 이 기능을 쓸 수 없다.

new_data = struct.pack(format_str, tuple_of_data[0], tuple_of_data[1], tuple_of_data[2],...)

또한, 이 있는 경우에는 튜플 변경, 크기는 format_str 변경사항과 I& # 39, ll 돌아가야 및 편집 정말 긴 줄이 있습니다.

해설 (0)

참고로 args/kwargs 함수 호출 구문, not really 연산자에서 일부입니다. 이 때문에, 즉 특정 부작용이 있습니다 t use # 39 에 제가 실행했음 can&, 인쇄, 이후 args 확장 기능이 아닙니다 기술서임을 인쇄하십시오.

이 합리적인 것 같다.

def myprint(*args):
    print *args

39 이 doesn& 죄송합니다. 컴파일하십시오, t (구문 오류).

이 정리합니다.

def myprint(*args):
    print args

하지만, 우리가 원하는 isn& 있는 t # 39 로 튜플 인수만 인쇄합니다.

내가 이 솔루션은 확정했다.

def myprint(*args):
    for arg in args:
        print arg,
    print
해설 (2)

이 매개 변수는 모든 기능을 사용할 수 있기 때문에, 일반적으로 입력 매개변수입니다 타겟대상 함수은 가상본 가상본 전달할 수 있습니다.

def foo(bar=2, baz=5):
    print bar, baz

def proxy(x, *args, **kwargs): # reqire parameter x and accept any number of additional arguments
    print x
    foo(*args, **kwargs) # applies the "non-x" parameter to foo

proxy(23, 5, baz='foo') # calls foo with bar=5 and baz=foo
proxy(6)# calls foo with its default arguments
proxy(7, bar='asdas') # calls foo with bar='asdas' and leave baz default argument

그러나 이러한 매개변수입니다 것이 저들이요 피하기 위해 실제 매개변수입니다 이름을 숨김니다.

해설 (0)

너 봐야하는데 dell. 파이썬 문서 (docs.python.org) 에 FAQ), 하지만 더 좋은 설명을 위해 특별히 [신비한 크리스티나랑 args 및 미스터 콰리스 (제공: archive.org)] [2] (원본 링크가 죽은 는 [here], [2]).

간단히 말해, 두 함수 또는 선택적 매개 변수를 때 사용하는 방법을 사용할 수 있습니다.

  • Args 로 사용할 때, t # 39 라고 donatelli don& 얼마나 되는지, 그리고 싶을 때 처리하십니까 매개변수입니다 인수만 전달될 수 있습니다 * 콰리스 이름으로 지정된 및 가치 있다.
myfunction(myarg=1)

[2]: //pypatterns.net/post/2009/10/the-mysterious-miss-args-and-mister-kwargs https://web.archive.org/web/20101017032628/http

해설 (2)