2018-10-10 Day9 함수 베이스

7908 단어

01- 얕은 복사와 깊은 복사


import copy copy.복사 (대상): 얕은 복사 복사 복사.deepcopy (대상): 깊이 복사
a = 100
b = a
b = 200

a = [1, 2]
b = a.copy()
b.append(3)
print(a)


복사: 변수의 값을 한 부 부여하여 새로운 데이터를 생성합니다.그리고 새로운 데이터에 대응하는 주소를 되돌려줍니다.얕은 복사: 직접 복사 주소 (슬라이드와 사전 목록의copy 방법은 얕은 복사) 깊이 복사: 주소에 대응하는 값을 복사하여 새로운 주소를 생성합니다
a1 = [1, 2]
a2 = {'a': 10}
list1 = [a1, a2]

얕은 복사

list2 = list1.copy()
list2 = copy.copy(list1)

딥 카피

list2 = copy.deepcopy(list1)
list2.append(1)
print(list2)
print(list1)
list2[0].append(100)
print(list2)
print(list1)

02 - 사전 및 목록의 응용


목록의 요소와 사전의 값은 모든 종류의 데이터일 수 있습니다

1. 목록에 사전이 있다

persons = [
    {'name': ' ', 'age': 30, 'sex': ' '},
    {'name': ' ', 'age': 58, 'sex': ' '},
    {'name': ' ', 'age': 40, 'sex': ' '}
]
print(persons)
print(persons[1])
print(persons[1]['name'])
person = persons[1]
print(person)
name = person['name']
print(name)

페르소나에서 가장 큰 나이에 대응하는 이름을 찾아내세요.
max1 = 0   #  
name = ''  #  
for item in persons:
    age = item['age']
    if age > max1:
        max1 = age
        name = item['name']

print(max1, name)

2. 사전에 목록이 있음


프로그램 작성, 한 학급 정보 저장, 학급 이름, 위치 포함, 모든 학생(학생 중 이름, 나이와 학교 저장)
my_class = {
    'class_name': 'python1807',
    'location': '18-6',
    'all_students': [
        {'name': ' ', 'age': 18, 'school': ' '},
        {'name': ' ', 'age': 19, 'school': ' '},
        {'name': ' ', 'age': 20, 'school': ' '}
    ]
}
print(my_class['all_students'][0]['school'])

연습: 반에 학생 한 명을 추가, 이름: 왕씨, 나이: 40, 학교: 북대청조
name = input(' :')
age = int(input(' :'))
school = input(' :')
#  
student = {'name': name, 'age': age, 'school': school}
#  
my_class['all_students'].append(student)
print(my_class)

연습2: 반에서 20세 이하의 학생을 삭제한다
#  
all_student = my_class['all_students']
for student in all_student[:]:
    if student['age'] < 20:
        all_student.remove(student)
print(my_class)

index = 0
while index < len(all_student):
    student = all_student[index]
    if student['age'] < 20:
        del all_student[index]
        continue
    index += 1
print(my_class)

03 - 함수를 사용하는 이유


함수가 없을 때의 문제: 1.같은 코드를 여러 번 반복해야 한다.기능이 바뀌면 많은 부분을 수정해야 한다. 함수 왼쪽으로 이동, 오른쪽으로 왼쪽으로 이동
def left():
    print('======= =========')
    print(' ')
    print(' ')
    print(' ')
    print(' ')
    print(' ')

오른쪽으로 이동
def right():
    print('======= =========')
    print(' ')
    print(' ')
    print(' ')
    print(' ')
    print(' ')

04 - 함수에 대한 선언


함수는 특정한 기능을 실현하는 코드 세그먼트에 대한 봉인 분류이다. 사용자 정의 함수(프로그래머가 스스로 그 기능을 실현한다고 성명)와 내장 함수(시스템이 이미 완성했다고 성명함)

1. 함수를 설명하는 문법


def 함수 이름(매개 변수 목록):함수체
설명: a.def -->python에서 함수를 설명하는 키워드 b. 함수 이름 --> 식별자, 키워드가 될 수 없습니다.PEP8명명명규범(모든 알파벳 소문자, 여러 단어 사이에 밑줄로 구분) 준수 명지의(이름 보고 함수 아는 기능) c. () --> 고정 형식 d. 매개 변수 목록 --> 참조 목록, 매개 변수 이름 1, 매개 변수 이름 2,...여러 개의 매개 변수가 있을 수도 있고, 함수의 외부에서 함수에 값을 전달하는 데 사용되는 매개 변수가 없을 수도 있다.

2. 초보자가 함수를 설명하는 절차


a. 함수를 확정하는 기능 b. 기능에 따라 함수 이름 c. 매개 변수 확정: 있는지 없는지 확인하고 몇 개 (함수를 실현하는 기능이 함수 밖에서 값을 전달할 필요가 있는지 없는지를 보고 몇 개 전달해야 하는지) d. 함수 기능 e. 반환값을 확정한다.

3. 함수 호출


함수를 설명할 때 함수체를 실행하지 않습니다.함수체는 함수가 호출될 때만 실행된다
구문:함수 이름(실참 목록)
설명: 함수 이름 -->은 이미 성명된 함수 () -->고정된 실참 목록 -->데이터 1, 데이터 2...형삼에 값을 매기는 데 쓰다
함수를 써서 두 수의 합을 인쇄하다
def yt_sum(num1, num2):
    print(num1 + num2)
yt_sum(10, 20)
yt_sum(100, 200)

함수를 작성하여'*'5개 인쇄
def print_star():
    print('*'*5)


print_star()


함수 쓰기,'*'n 인쇄
def print_star2(n):
    print('*'*n)


print_star2(10)
print_star2(20)


연습: 함수 하나 쓰고 1+2+...+ 계산하기n의 합
def yt_sum2(n):
    sum1 = 0
    for x in range(1, n+1):
        sum1 += x
    print(sum1)


yt_sum2(100)


05- 함수 호출


1. 서식


함수 이름(실참 목록)

2. 함수 호출 과정(중점!!!!)


첫 번째 단계: 함수 성명 위치로 돌아가기 두 번째 단계: 인삼에 실참으로 값을 부여하기(전참: 모든 매개 변수에 값이 있어야 함) 세 번째 단계: 실행 함수체 네 번째 단계: 되돌아오는 값 다섯 번째 단계: 함수체를 실행하고 함수 호출 위치로 돌아가기 다음 뒷면의 코드
def sum2(num1, num2):
    # num1 = 10, num2 = 20
    print(num1 + num2)


sum2(10, 20)
print('=====')

06- 함수의 매개 변수


1. 위치 매개 변수와 키워드 매개 변수


"""호출 함수 실삼의 쓰기 방식에 따라: 위치 매개 변수: 실삼의 순서에 따라 하나하나 형삼에 값을 부여하는 키워드 매개 변수: 형삼 1=값 1, 형삼 2=값 2..."""
def func1(a, b, c): print('a:', a, 'b:', b, 'c:', c)
위치 매개 변수func1(10,20,30) 키워드 매개 변수func1(c=300,a=200,b=100)

2. 기본 매개 변수


함수 성명 시 매개 변수에 기본값을 설정할 수 있지만, 기본값이 있는 매개 변수는 매개 변수 목록의 마지막에 기본값이 있는 매개 변수를 놓아야 하며, 호출할 때 전참하지 않아도 된다
def func2(a, c, b=0):

    print('a:', a, 'b:', b, 'c:', c)


# a=10  c=20
func2(10, 20)
# a=100 c=200 b=300
func2(100, 200, 300)


def func3(a=10, c=30, b=20):

    print('a:', a, 'b:', b, 'c:', c)


func3(a=100, b=200)
func3(100, b=200)


3. 부정확한 길이 매개 변수


매개 변수의 개수가 확실하지 않을 때, 형삼의 앞에 *를 더해서 이 형삼을 하나의 원조로 만들어 여러 개의 매개 변수의 주의를 받는 데 사용할 수 있다. 함수에 여러 개의 매개 변수가 있다면, 부정확한 길이의 매개 변수는 마지막에 두어야 한다
#  , 
def my_sum(*nums):
    print(sum(nums))


my_sum()
my_sum(1)
my_sum(1, 2)
my_sum(1, 2, 3, 4)


def func4(name, age, *scores):
    print(scores, name, age)


func4(' ', 18, 90, 29, 89)



07 - 함수의 반환값


함수의 반환 값은 함수 호출 표현식의 값이고,return 키워드 뒤에 있는 표현식의 값이다.python의 모든 함수는 되돌아오는 값이 있습니다. 되돌아오는 값은 기본적으로 None입니다. (실행 함수체는 Return을 만나지 못했고 함수의 되돌아오는 값은 None입니다. Return 함수의 되돌아오는 값은 Return 뒤의 값입니다.)
함수 호출 표현식 --> 호출 함수의 문장 (함수 이름 (실참) return --> 키워드, 함수체에만 쓸 수 있습니다.반환값과 끝 함수를 되돌려줍니다
주의: 함수의 반환 값을 보십시오.return을 만났는지만 보십시오.만나지 않으면 None이고, 리턴을 만나면 리턴 뒤의 값이다.

2. 함수 호출 과정(중점!!!!)


첫 번째 단계: 함수 성명 위치로 돌아가기 두 번째 단계: 인삼에 실참으로 값을 부여하기(전참: 모든 매개 변수에 값이 있어야 함) 세 번째 단계: 실행 함수체 네 번째 단계: 되돌아오는 값 되돌리기 -->함수 호출 표현식에 되돌아오기 다섯 번째 단계: 함수체를 실행하고 함수 호출 위치로 돌아가기 다음 코드
상황1:return 없음
def func1():
    print('hello python!')
    print('abcc')
    for x in range(10):
        print(x)

#  
re = func1()
print(re)

#  
print(func1())

#  
list1 = [func1(), 1]
print(list1)

상황2:return이 함수를 실행할 때,return을 만나면 함수가 바로 끝납니다.그리고return 뒤의 결과를 반환값으로 합니다
def func2():
    print('=====')
    print('!!!!!')
    return 100
    print('*****')


re = func2()
print(re)


주의: 함수에return만 있는 것이 아니라 함수의 반환값은return 뒤의 값입니다
def func3(n):
    if n % 2:
        return ' '


print(func3(4))   # None
print(func3(5))   # ' '


함수의 기능을 실현하면 새로운 데이터가 생기고 새로운 데이터가 되돌아온다.새로운 데이터가 나오지 않으면 값을 되돌릴 필요가 없습니다
#  , 
def jie_ceng(num):
    sum1 = 1
    for x in range(1, num+1):
        sum1 *= x

    return sum1


re = jie_ceng(10)
print(re)
print('===%d===' % re)
list1 = [re, re]
print(list1)

#  , :" ?"
def say_hello():
    print(' ?')

좋은 웹페이지 즐겨찾기