Python3 프로그래밍 - 12b-반환값의 함수 연습

This is a continuation of exercise 12 a (A function and its definition)



값을 반환하는 함수
지금까지 화면에 값을 출력하는 함수를 작성했습니다.우리는 함수에서 값을 되돌려 변수에 부여하고 나중에 사용할 수도 있다.

예1
이전에 우리가 calc_area 함수를 작성했을 때, 그것은 입력과 출력을 상세하게 설명하는 문자열을 출력할 것이다.예를 들어 우리는 계산 결과에만 흥미를 가지고 return 키워드와 계산 값을 사용하여 계산 결과를 되돌릴 수 있다.다음 코드 세그먼트는 calc_area으로 계산된 값만 되돌려줍니다.
def calc_area(base, height):
    return 0.5 * base * height


# take the base and height from the user
base = float(input("Enter base: "))
height = float(input("Enter height: "))

# call the function here and pass base and height
# to it as the base and height are required
# the value is then assigned to a variable, `area`
area = calc_area(base, height)

# We then make use of the `area`
print(
    f"The area of a triangle of base, {base} and height, {height} is {area}")

calc_area은 현재 인쇄 사용자에게 좋은 텍스트와 무관하며, 이 텍스트는 사용자에게 어떤 입력과 출력이 관련되어 있는지 알려 줍니다.이것은 사용자가 결정합니다.이로써 calc_area의 단원 테스트를 작성하고 이를 스크립트로 다른 프로그램에 가져오는 것이 더욱 쉽다.

예2
이것은 함수로 목록을 매개 변수로 한 다음 최저에서 최고로 정렬합니다.이 정렬 기능은 어떻게 작동합니까?
만약 우리가 n의 크기의 숫자 목록을 얻고 두 개의 순환을 사용한다면 실제로는 끼워 넣은 것이다.첫 번째 순환은 목록에서 n - 1회 순환한다.두 번째는 n - 2회다.두 번째 순환에서, 우리는 첫 번째 값이 두 번째 값보다 큰지 검사한다.만약 그렇다면 우리는 swap의 값을 비교한 다음에 두 번째 값과 세 번째 값을 비교한 다음에 세 번째 값과 네 번째 값을 비교하여 목록의 끝에 도달할 때까지 유추할 것이다.첫 번째 주기 이동(단계 1)을 수행한 다음 프로세스가 다시 시작됩니다.
def sort_func(nums):
    """
    This function takes a list as an argument and
    returns a sorted version of it
    """
    n = len(nums)

    for i in range(n):
        for j in range(1, n):
            if nums[j - 1] > nums[j]:
                # swap
                nums[j - 1], nums[j] = nums[j], nums[j - 1]

    return nums


print(sort_func([6, 3, 2, 4, 1]))
print(sort_func(['w', 't', 'a', 'i']))

이 줄의 nums[j - 1], nums[j] = nums[j], nums[j - 1]에서 만약 nums[j - 1] > nums[j]이 있다면 우리는 여기서 값을 교환할 것입니다.이것은python에서 도움말 변수를 도입하지 않고 교환하는 데 사용되는 기술입니다.
우리는 할 수 있었는데,
temp = nums[j - 1]
nums[j - 1] = nums[j]
nums[j] = temp

여러 개의 매개 변수를 가진 함수
지금까지 우리는 단일 값(데이터)이나 목록을 매개 변수로 함수에 전달했다.현재, 우리가 몇 개의 매개 변수를 하나의 함수에 전달하고 싶다면, (우리는 여전히 하나의 목록 정렬을 사용할 수 있다.) 함수를 만들 때 많은 매개 변수를 제공해야 하지만, 파이톤에는 간단한 방법이 있다.

예3
여러 문자열을 매개 변수로 받아들이고 매개 변수의 문자 수를 인쇄하는 함수
def many_args(s1, s2, s3, s4, s5):
    print(len(s1))
    print(len(s2))
    print(len(s3))
    print(len(s4))
    print(len(s5))

many_args('sandy', 'jude', 'mani', 'desmond', 'peter')
우리 잘했어?아니, 만약 우리가 여섯 번째 변론을 통과하고 싶다면?우리는 반드시 many_args 함수를 업데이트해야 한다.many_args 함수를 사용하는 다른 프로그램은 전달된 매개 변수를 업데이트해야 합니다.우리는 그러고 싶지 않다.우리는 이런 함수를 써서는 안 된다.이것은 일종의 관점과 풍격 선택이다.
*args**kwargs다음 exercise에서python의 데이터 구조, 예를 들어 목록, 사전, 집합과 모듈을 상세하게 토론할 것입니다.이러한 데이터 구조는 데이터를 조직하고 관리하는 데 도움이 된다.우리는 우연히'iterable'이라는 단어를 발견했다.앞에서 언급한 데이터 구조도 교체를 허용한다.

간단한 열거, 모듈, 집합, 사전
이런 상황에서 우리는 매개 변수로서의 데이터 구조에 관심이 있기 때문에 이것만으로도 충분하다.
  • 목록은 네모난 괄호로 구분된 쉼표로 구분된 데이터 집합이고 [data1, data2, ...]의 데이터는 모든 데이터 형식이나 데이터 구조가 될 수 있다.이것은 우리가 데이터로 다른 목록을 포함하는 목록을 만들 수 있다는 것을 의미한다.
  • 모듈은 목록이지만 괄호로 구분, (data1, data2, ...)
  • 은 하나의 집합이 하나의 목록과 같지만 중복항목이 없고 괄호로 구분되어 {data1, data2, ...}이다.
  • 사전은 키 이름 대 형식의 데이터 구조이다.지금까지 목록, 원조와 집합의 인덱스(매거) 범위는 0에서 n - 1으로 그 중에서 n은 크기이다.사전에 대해, 우리는 키를 사용하여 값에 접근한다.{key1:value2, key2:value2, ...} . 우리는 키, 값, 그리고 키와 값을 순환할 수 있다.사전은 하나의 집합과 같아서, 그 키는 유일성을 가지고 있다.
  • *args우리는 여러 개의 데이터를 매개 변수로 함수에 전달하는 것에 대해 토론했고 한계성을 보았다.*args은 데이터의 집합을 나타낸다. 예를 들어 목록, 원조 또는 집합이다.매개 변수 이름 *args은 변환입니다.변수명 args 앞에 별표 *이 있습니다.바로 *이 변수를 데이터의 집합으로 만든다.따라서 우리는 그 앞에 별표 *이 있는 한 어떤 명칭도 사용할 수 있다.*pancakes*args과 마찬가지로 적용된다.
    변수의 데이터 수량이 지정되지 않았습니다.이것은 우리가 직면한 문제를 해결했다. 함수에 다른 데이터를 전달하려면 함수를 업데이트해야 한다.
    이곳의 관건적인 개념은 함수의 매개 변수 수량을 제한하는 것이다.아니오, func(arg1, arg2, arg3, ...).최대 네 개, 유사한 상황이 발생하면 이 네 개는 매개 변수로 명명되어야 한다.

    예4
    우리는 example 3을 실현할 것이지만 이번에는 *args 개념을 사용했다.
    def many_args(*s):
        for i in s:
            print(i, "=", len(i))
    
    
    many_args(
        'sandy', 'jude', 'mani', 'desmond', 'peter',
        'milo', 'john', 'kobby', 'hannah', 'alvin',
        'amira', 'leticia', 'sadik', 'ed', 'kwesi')
    
    
    우리는 몇 개의 매개 변수를 many_args에 전달할 수 있지만, 우리의 함수는 *s만을 매개 변수로 한다.
    *args이 필요한 함수로 목록 전달
    또한 목록을 many_args으로 전달
    largs = ['candy', 'foo', 'bar', 'swift', 'python',
             'ryder', 'horse', 'rubber-duck', 'pizza']
    
    
    many_args(largs)
    
    그런데 결과가 뭐예요?해봐.너는 무슨 일이 일어났다고 생각하니?우리는 어떻게 이 문제를 해결합니까?

    목록 매개변수를 *list arg로 설정하기
    'candy', 'foo', 'bar', 'swift', 'python', 'ryder', 'horse', 'rubber-duck', 'pizza'] = 9은 예시 5의 출력이다.이것은 우리가 하나의 매개 변수를 many_args에 전달했다는 것을 의미한다. 이 매개 변수는 9개의 문자열의 목록이다.우리는 9개의 문자열을 매개 변수로 many_args에 전달하지 않았다.
    목록이나 원조를 *args으로 전달하려면 변수 이름 앞에 별표를 붙여야 합니다.해봐, 혼자 봐.
    many_args(*largs)
    
    
    # output of *largs
    # candy = 5
    # foo = 3
    # bar = 3
    # swift = 5
    # python = 6
    # ryder = 5
    # horse = 5
    # rubber-duck = 11
    # pizza = 5
    
    

    **과격**kwarg은 키워드 매개변수를 나타냅니다.**kwarg은 기본적으로 *args이지만 우리는 값 옆에서 키를 전달한다.그래서 이 값들은 키를 통해 접근한다.이것은 듣기에 사전 같다. 그렇지?

    예5
    def many_args(**s):
    
        for key, value in s.items():
            print(f"{key}: {value}, has {len(value)} chars")
    
    
    many_args(title="Swift python", author="Otu Michael",
              hobby="Staring at the screen")
    
    
    현재 우리는 전달된 값과 그것들의 키에 접근할 수 있다.

    사전을 데이터로 전달
    우리는 사전은 데이터 구조에 대한 키 이름이라고 엉터리로 말했다.다음 코드 세션을 고려하여 사전을 만들었습니다.
    dict_data = {
        'title': "Swift python",
        'author': "Otu Michael",
        'hobby': "Staring at the screen"
    }
    
    **dict_data을 여러 매개변수로 전달
    many_args(**dict_data)
    
    # output
    # title: Swift python, has 12 chars
    # author: Otu Michael, has 11 chars
    # hobby: Staring at the screen, has 21 chars
    
    **을 생략하면 어떻게 됩니까?해봐.키를 추가하면 문제를 해결할 수 있습니까?당신은 무엇을 알아차렸습니까?

    기본 매개 변수
    그렇다면 만약 우리가 파라미터를 받아들이는 함수에 전달하지 않는다면 무슨 일이 일어날 것 같습니까?
    당연히 잘못이지.우리는 함수가 기본 데이터'function '을 사용해서 데이터를 전달하지 않을 때 함수가 이 값을 가정하기를 바랍니다.

    예6calc_area 함수를 이용하겠습니다.우리는 매개 변수에 기본값을 지정할 것이다.
    def calc_area(base=1, height=1):
        return 0.5 * base * height
    
    
    # passed no args
    print(calc_area())  # 0.5
    
    # passed base but not height
    print(calc_area(base=12))  # 0.6
    
    # passed height but not base
    print(calc_area(height=14))  # 0.7
    
    
    여기의 기본 매개 변수는 1입니다.

    메모
  • some_name = func_name으로 전화하고 some_name()으로 전화하십시오.func_name()처럼 작동
  • 좋은 웹페이지 즐겨찾기