2018-10-10day9 함수기초

6904 단어
1. 얕은 복사, 깊은 복사
copy.복사 (대상): 얕은 복사 복사 복사.deepcopy(개체): 딥 카피 """
"""복사: 변수의 값을 한 부 부여하여 새로운 데이터를 생성합니다. 그리고 새로운 데이터에 대응하는 주소를 얕은 복사로 되돌려줍니다. 주소를 직접 복사합니다(절편과 사전 목록의copy 방법은 모두 얕은 복사입니다) 깊은 복사: 주소에 대응하는 값을 복사하여 새로운 값을 생성합니다"""
a1 = [1,2]
a2 = {'a':10}
list1 = [a1,a2]

list2 = list1.copy()
list3 = copy.deepcopy(list1)
list2.append(1)
list3.append(1)
print(list2)
print(list3)
list2[0].append(3)# 
list3[0].append(3)# 
print(list2)
print(list3)

2. 사전과 목록의 응용
목록의 요소와 사전은 모든 종류의 데이터일 수 있습니다
""1. 목록에 사전이 있습니다
persons = [
{'name':' ','age':30,'sex':' '},
{'name':' ','age':58,'sex':' '},
{'name':' ','age':40,'sex':' '}
          ]
print(persons)

print(persons[1]['name'])

페르소나에서 가장 나이가 많은 사람의 이름을 찾아내세요.
age = 0
max1 = 30
for x in range(0,len(persons)):
    age = persons[x]['age']
    if age > max1:
        max1 =age
        name = persons[x]['name']
print(name,max1)

2. 사전에 프로그램 하나를 작성하여 한 학급의 정보를 저장하고 학급명, 위치를 포함하여 모든 학생(학생 중 이름, 연령을 저장해야 함)
my_class = {
    'class_nmae':'py1807',
    'location':'18-6',
    'all_stu':[
    {'name': 'xiaohua', 'age':18, 'school': ' '},
    {'name': 'xiaohong', 'age': 20, 'school': ' '},
    {'name': 'xiaoming', 'age': 17, 'school': ' '}]
}
print(my_class['all_stu'][0]['school'])

연습: 반에 학생 한 명을 추가, 이름: 왕씨, 나이: 40, 학습: 북대청조
name = input(' :')
age = input(' :')
school = input(' :')

new_dict = {'name':name,'age':age,'school':school} my_class['all_stu'].append(new_dict)
 print(my_class['all_stu'])

연습2: 반에서 20세 미만의 학생 삭제
 :
all_stu = my_class['all_stu']
for student in all_stu[:]:
    if student['age'] < 20:
        all_stu.remove(student)
print(my_class)
 :
index = 0
while index < len(all_stu):
    student = all_stu[index]
    if student['age'] < 20:
        del all_stu[index]
        continue
    index += 1
print(my_class)

3. 함수의 매개 변수
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(nums)
my_sum(1)
my_sum(1,2)
my_sum(1,2,3,4)
my_sum()

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

func4('xiaohua',89,18,6546,65)

4. 함수 선언
""함수는 특정한 기능을 실현하는 코드 세그먼트에 대한 봉인이다
분류: 사용자 정의 함수(프로그래머의 생명으로 이루어진 기능)와 내장 함수(시스템 및 성명 완성)
1. 함수를 설명하는 문법 def 함수 이름(매개 변수 목록): 함수체
설명: a, def -->python에서 함수를 설명하는 키워드 b. 함수 이름 --> 식별자, 키워드가 될 수 없습니다.PEP8명명명규범(모든 알파벳 소문자, 여러 단어 사이 사용 분리)을 준수하여 명지의(이름 보고 함수 아는 기능) c.()-->고정형식 d. 매개 변수 목록 -->형삼 목록, 매개 변수 이름 1, 매개 변수 이름 2,...여러 개의 매개 변수가 있을 수도 있고, 함수의 외부에서 함수에 값을 전달하는 데 사용되는 e.:-->고정 형식 f. 함수체 -->가 함수 기능을 실현하는 코드 세그먼트가 없을 수도 있다
2. 초보자가 함수를 설명하는 절차
a. 함수를 확정하는 기능 b. 기능에 따라 함수 이름 c. 매개 변수 확정: 있는지 없는지 확인하고 몇 개 (함수를 실현하는 기능이 함수 밖에서 값을 전달할 필요가 있는지 없는지를 보고 몇 개 전달해야 하는지) d. 함수 기능 e. 반환값을 확정한다.
3. 함수 호출
함수를 설명할 때 함수체를 실행하지 않으며 함수가 호출될 때만 문법을 실행합니다: 함수 이름 (실참 목록) 설명: 함수 이름 -->은 이미 설명한 함수 () -->고정된 실참 목록 -->데이터 1, 데이터 2...인삼에''''값을 부여하는 데 사용
함수를 써서 두 수의 합을 인쇄하다
def my_sum(num1,num2):
    print(num1+num2)
my_sum(20,20)

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

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

연습: 함수 하나를 써서 1+2+3+...+ 계산하기n의 합
def sum1_n(n):
    sum1 = 0
    for x in range(0,n+1):
        sum1 += x
    print(sum1)

5. 함수 호출
1. 서식 함수 이름(실참 목록)
2. 함수 호출 과정(중점!!!!)첫 번째 단계: 함수 성명 위치로 돌아가기 두 번째 단계: 인삼에 실참으로 값을 부여하기(전참: 매개 변수마다 값이 있어야 하며 많지도 적지도 않아야 한다) 세 번째 단계: 실행 함수체 네 번째 단계: 되돌아오는 값 다섯 번째 단계: 실행이 끝난 함수체는 함수 호출 위치로 돌아가 다음 코드를 수행한다.
"""
def sum2(num1,num2):
     #num1 = 10 num2 = 20
    print(num1+num2)
sum2(10,20)
print("=====")

6. 함수의 반환값
"""함수의 반환값은 함수 호출 표현식의 값입니다. 리턴 키워드 뒤에 있는 표현식의 값인python의 모든 함수에 반환값이 있습니다. 반환값은 기본값인 None(실행 함수체는return을 만나지 않았음)이고return을 만났습니다. 함수의 반환값은 함수 뒤에 있는 값 함수 호출 표현식입니다. -> 호출 함수의 문장(함수명(실참)) return--> 키워드, 함수체에만 쓸 수 있습니다.반환값과 끝 함수를 되돌려줍니다
주의: 함수의 반환 값을 보고, Reurn을 만났는지 안 만났는지만 봅니다.리턴을 만나지 않으면 none이고, 만나면 리턴 뒤의 값이다.
2. 함수 호출 과정(중점!!!!)첫 번째 단계: 함수 성명 위치로 돌아가기 두 번째 단계: 인삼에 실제 참조로 값을 부여하기(전참: 모든 매개 변수에 값이 있어야 하며 많지도 적지도 않아야 한다) 세 번째 단계: 실행 함수체 네 번째 단계: 되돌아오는 값 되돌리기 ---> 함수 호출 표현식에 되돌아오기 다섯 번째 단계: 실행이 끝난 함수체는 함수 호출 위치로 돌아가고 다음 코드를 실행한다.
상황 1: return 없음
def func1():
    print('hello python!')
re = func1()
print(re)

반환 값 print 직접 인쇄(func1()
반환 값을 목록의 요소list1 = [func1 (), 1] print(list1)
상황2:return ""실행 함수가 있을 때return 함수를 만나면 바로 끝납니다. 그리고return 뒤의 결과를 반환값으로 주의합니다. 함수에return만 있는 것이 아니라 함수의 반환값은return 뒤의 값 "입니다.
def func2():
    print('====')
    print('!!!!')
    return  100
    print('*****')


re = func2()
print( re)


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(' ?')

좋은 웹페이지 즐겨찾기