2016-11-01 6 views
-1

비톤 범위() 함수의 몇 가지 측면에 대해 궁금합니다.비단뱀 범위 함수에 대한 깊은 이해

range(10)과 같은 단일 인수를 지정하면이 인수를 중지 지점으로 간주합니다. 두 개의 arg를 주면, 그것들은 start, stop, 그리고 세개의 args를 준다면, 그것들은 start, stop, steps으로 처리 될 것입니다.

어떻게 인수의 순서가 변경됩니까? 하나의 인수로 "중지"하지만 문서는 "시작, 중지, 단계"라고합니다! 및 "바즈"이 될 것입니다 내가 기본 매개 변수와 함수를 만들 경우, 예를 들어

foo(bar=None, baz=None, arg=None)처럼, 그리고 foo(1, 2)과 같이 호출 (나는 생각한다, 그것은 그와 무언가를해야한다) "바"1이 될 것이다

도움 주셔서 감사합니다.

+3

깊은 이해 가능 : https://hg.python.org/cpython/file/tip/Objects/rangeobject.c – J0HN

답변

2

비슷한 일을하려는 경우, 인수의 수를 수용 할 수 있으며, 필요한 경우 수동

def foo(*args): 
    if not args: 
     raise TypeError("foo expected 1 arguments, got 0") 
    elif len(args)>3: 
     raise TypeError("foo expected at most 3 arguments, got {}".format(len(args))) 
    pass 

을 오류를 발생 그리고 내가 이해한다면 len(args)

1

에 따라 등 start = args[0]을 할당 귀하의 질문을 올바르게, 같은 한 인수를 start 대신 stop 매개 변수로 사용할 수 있도록 주어진 경우 range 함수를 start, stop, steps 함께 정의 된 얻는 방법 궁금합니다. 첫번째?

내가 코드가 같은 수 상상 : 그것은 계속 그런

def range(start=0, stop=None, steps=None): 
    if stop is None: 
     stop = start 
     start = 0 
    ... 

-2

이을 의미합니까?

>>> def range_named_args(**args): 
     if 'start' not in args.keys(): 
      args['start'] = 0 
     if 'steps' not in args.keys(): 
      return(range(args['start'],args['stop'])) 
     else: 
      return(range(args['start'],args['stop'],args['steps'])) 


>>> for i in range_named_args(stop = 3): 
     print(i) 
0 
1 
2 
>>> for i in range_named_args(stop = 5, start = 2): 
     print(i) 
2 
3 
4 
>>> for i in range_named_args(steps = 2, stop = 6, start = 2): 
     print(i) 
2 
4 
+0

아니,이 모든 질문에 대답하지 않습니다. 그는 논쟁이 더 많이 제공 될 때 어떻게 논쟁이 "장소를 바꿀 수 있는가"에 대해 물었다. 당신은 전혀 대답하지 않고, 키워드 논쟁을 엄격하게 다룹니다. – Rejected

+0

그게 무슨 소리 죠? 그는 자신의 기능을 통해 내장 range()에 기능을 추가하고자했습니다. – Evan

+0

그의 질문을 다시 읽고, 그는 묻지 않았고/전혀 말하지 않았다. 그는 구체적으로 "나는 pythons range() 함수의 일부 측면에 대해 궁금해하고 있습니다."라고 말한 다음 추가 인수를 제공하여 배치를 변경하는 다양한 시나리오를 나열합니다 (그가 묻는 것). 그가 자신의 함수를 지정할 때, 파이썬의 기본 동작이'range()'함수의 동작과 다르다는 것을 보여줄뿐입니다. 이것은 인수가 전달 된 순서를 유지한다는 것입니다. 그는 기능을 확장하기를 원한다고 말하지도 않고, 질문에있는 어떤 것도 그의 말을 다루지 않습니다. – Rejected