>  기사  >  백엔드 개발  >  파이썬의 기본 포인트

파이썬의 기본 포인트

巴扎黑
巴扎黑원래의
2017-07-18 13:32:171229검색

함수 기본 개요

함수를 배우기 전에 저는 항상 프로세스 지향 프로그래밍, 즉 비즈니스 로직을 기반으로 위에서 아래로 함수를 구현하는 것을 따라왔습니다. 특정 함수의 코드가 괜찮은지 생각해 볼 수 있습니다. 여러 곳에서 사용됩니다. 한 번만 쓰시겠습니까? 이때 코드는 어떻게 정의해야 할까요? 다음 사례를 먼저 관찰하십시오.

참일 때:
CPU 사용률이 90%보다 큰 경우:
      #이메일 알림 보내기
      이메일 서버에 연결
      이메일 보내기
                                     >                                 . 사용된 공간>
      #메일 알림 보내기
메일함 서버에 연결
메일 보내기
연결 닫기

IF 메모리 점유 & gt; 80%:
#메일 알림 메일 보내기
메일 보내기 추출된 공개 예시:

def 이메일 보내기 ( 내용)
#이메일 알림 보내기
메일함 서버에 연결

이메일 보내기

연결 닫기

True일 때:

CPU 사용률 > 90%인 경우:
이메일 보내기('CPU 알람')

하드 디스크 사용 시 space & gt; 90%:
이메일 보내기('하드 디스크 알람')
메모리를 차지하는 경우 & gt; 두 번째 구현은 첫 번째 구현보다 재사용 및 읽기가 더 쉽습니다. 한 곳에서 정의되고 여러 곳에서 호출되는 것이 사실 함수형 프로그래밍입니다

함수형 프로그래밍 개념:
프로그램을 개발할 때 특정 코드 조각을 여러 번 사용해야 하지만 작성 효율성을 높이기 위해서는 코드 재사용, 독립적인 기능을 가진 코드 블록을 작은 모듈로 정리한 것입니다.

호출


<1>함수 정의


 정의된 함수의 형식은 다음과 같습니다.

  def function name ():

   Code

 demo:  # 정보 인쇄 기능을 완성할 수 있는 함수 정의 def printInfo():   print '---------- ----------------------'
   print '인생은 힘들다 단편, 나는 파이썬을 사용한다'
   print '------------------------------------------------'


함수 정의는 주로 다음과 같은 점을 가지고 있습니다.


 
• def: 함수를 나타내는 키워드 • 함수 이름: 함수 이름, 호출 시 함수 이름에 따라 함수가 호출됩니다.

• 함수 본문: 함수에서 일련의 논리가 수행됩니다. 이 함수의 함수 내용을 계산합니다.

 • 매개 변수: 함수 본문에 대한 데이터 제공

 • 반환 값: 함수가 실행되면 호출자에게 데이터를 반환할 수 있습니다.
<2>함수 호출
함수를 정의한 후에는 특정 함수가 포함된 코드를 갖는 것과 같습니다. 이러한 코드를 실행하려면 함수를 호출해야 합니다(정의할 때 주의하세요). 함수 내용은 실행되지 않습니다)
함수 호출은 매우 간단합니다. 함수 이름()을 통해 호출을 완료할 수 있습니다.demo:

  # 함수가 정의된 후에는 함수가 자동으로 실행되지 않습니다.  printInfo( )

<3>함수 설명

예:

>>> def test(a,b):
... "사용 두 숫자의 합을 완성하세요"

... print("%d"%(a+b))

...
>>> >>> test(11,22)33 다음 코드를 실행하세요> >> help(test)

테스트 함수 관련 안내를 보실 수 있습니다

================ ============= =================

모듈 __main__의 기능 테스트에 대한 도움말:

test(a, b)
이 사용됩니다. 두 숫자의 합을 완성하려면
(END)

============================================

함수 매개변수-반환값

<1> 매개변수로 함수 정의
예는 다음과 같습니다.
def addnum(a, b):
 c = a +b
   print c
<2> 매개변수를 사용하여 함수 호출
  위의 add2num(a, b) 함수 호출을 예로 들어보세요.

 def addnum(a, b):
c = a+b
  print c

 add2num(11, 22) #매개변수가 있는 함수를 호출할 때는 괄호 안에 데이터를 전달해야 합니다

 요약:
 • Small when 정의 매개변수를 받는 데 사용되는 괄호 안의 매개변수를 "형식 매개변수"라고 합니다
 • 호출 시 함수에 전달하는 데 사용되는 괄호 안의 매개변수를 "실제 매개변수"라고 합니다

 ps: 나중에 논의할 것입니다. 함수 매개변수를 자세히 설명하는 별도의 블로그입니다


<3> 반환 값이 있는 함수
  다음 예:
  def add2num(a, b):
  c = a+b
  Return c
 
 저장된 함수의 반환 값은 다음과 같습니다.
 #Define function


  def add2num(a, b):
  Return a+b

  #통화 기능, 그런데 함수 저장 반환 값
  result = add2num(100,98)

  #결과는 add2num의 반환 값을 저장했기 때문에 다음에 사용할 수 있습니다
 결과 인쇄
 Result :
 19 8


파이썬에서는 여러 값을 반환할 수 있습니다 ​​
 >>> def divid(a, b):
  ... shang = a//b
  ... yushu = a%b
... return shang, yushu
  ...
  >>> sh, yu = divid(5, 2)
  >>>sh
  5
  >>> yu
  1

핵심은 튜플을 사용하는 것입니다


함수는 매개변수 유무, 반환값 유무에 따라 서로 결합할 수 있습니다. 총 4가지 종류가 있습니다
 • 매개변수 없음, 반환 없음. value
 • 매개변수가 없으면 반환값이 없습니다
 • 매개변수가 있으면 반환값이 없습니다
 • 매개변수와 반환값이 있습니다


  <1>매개변수가 없고 반환값이 없는 함수
  이런 종류의 함수는 매개변수를 받을 수 없고 반환값도 없습니다. 일반적인 상황에서 인쇄 프롬프트 표시등은 함수와 유사합니다. 이 유형의 함수를 사용하세요
  <2> 매개변수 및 반환 값이 없는 함수
   이 유형의 함수는 매개변수를 받을 수 없지만 일반적으로 특정 데이터를 반환할 수 있습니다. 데이터 수집 등의 상황에서는 이런 함수를 사용하세요
  <3>매개변수가 있고 반환 값이 없는 함수
  이러한 함수는 매개변수를 받을 수 있지만 데이터를 반환할 수는 없습니다. 일반적인 상황에서는 이 유형의 함수를 설정에 사용합니다. 결과가 필요하지 않은 특정 변수에 대한 데이터
 <4> ;매개변수와 반환값이 있는 함수
  이러한 유형의 함수는 매개변수를 받을 수 있을 뿐만 아니라 특정 데이터를 반환할 수도 있습니다. 일반적으로 데이터 처리가 필요하고 결과가 필요한 응용 프로그램에서는 이 기능을 사용합니다. 함수 종류
간단히 요약


 • 함수는 매개변수와 반환값 유무에 따라 서로 결합될 수 있습니다
 • 함수를 정의할 때 실제 기능 요구 사항을 기반으로 설계되므로 작성되는 함수의 종류는 개발자마다 다릅니다
 • 함수의 반환 여부 반환 여부에 따라 값이 달라집니다. 왜냐하면 반환만이 데이터를 반환할 수 있기 때문입니다
 • 개발 중에는 함수가 값을 반환해야 하는지 여부에 따라 함수를 설계하는 경우가 많습니다
 • 함수에는 여러 개의 return 문이 있을 수 있지만 하나의 return 문이 실행되면 이 함수의 호출이 완료된 것입니다
 • 프로그램에서 함수 이름을 반복하지 마십시오. 이 반복되면 나중 항목이 이전 항목을 덮어쓰게 됩니다(참고: 변수 이름을 반복하지 마십시오. 변수 이름도 덮어쓰게 됩니다)

함수 중첩

def testB():
 print('---- testB start----')
 print('여기에 testB 함수에 의해 실행되는 코드가 있습니다...(생략)...' )
 print('---- testB end----')


def testA():

print('-- testA start--')

testB()

 print('---- testA end---')

Call

testA()


결과:
---- testA 시작-- --
---- testB start----
testB 함수 실행을 위한 코드는 다음과 같습니다...(생략)...
---- testB end----
-- -- testA 끝 ----

간단한 요약:
 • A 함수가 다른 함수를 호출합니다, 이것이 이른바 함수 중첩 호출입니다.
 •함수 A에 있는 경우 또 다른 함수 B를 호출하면 함수 B의 모든 작업이 먼저 실행된 후 함수 A가 마지막으로 실행된 위치로 돌아갑니다

함수 중첩 사례:

 1. 3개를 찾는 함수를 작성하세요. 숫자의 합
  2. 세 숫자의 평균을 구하는 함수를 작성하세요


 # 세 숫자의 합을 구하세요
 def sum3Number(a,b,c):
  Return a+b+c # 반환 뒤에는 숫자 값이나 표현식이 올 수 있습니다.

 # 3개 숫자의 평균을 완성하세요
 defaverage3Number(a,b,c):

  # sum3Number이기 때문에 함수가 이미 세 숫자의 합을 완성했으므로 호출하기만 하면 됩니다
    #즉, 수신된 세 숫자는 실제 매개변수로 전달될 수 있습니다
  sumResult = sum3Number(a,b, c)
   aveResult = sumResult/3.0
   return aveResult

 # 3개 숫자의 평균을 완성하는 함수를 호출합니다

 result =average3Number (11,2,55)

  print("평균은 %d"%result)

함수의 지역변수와 전역변수

지역변수

 예:
  [8]: def text1() :
  ...: a = 200
                           ..: ​ ​ print("text1---%d" %a)
​ ​ ...:

​ ​ [9]에서: def text2():
​ ​ ​...: ​ ​ a = 400

​ ​...: ​ ​ print(" text2----%d" %a)

   ...:


  [10]에서: text1( )

  text1----200

  수정 후

  text1----300

  In [ 11]: text2()
  text2----400

 
 요약

  • 지역 변수는 내부에 정의된 변수입니다. function  • 서로 다른 함수가 같은 이름의 지역 변수를 정의할 수 있지만 각각 다른 이름을 사용하므로 아무런 영향을 미치지 않습니다   • 지역 변수의 역할, 데이터를 일시적으로 저장하려면 저장용 함수에 변수를 정의해야 합니다 . 이것이 그 역할입니다


전역 변수

개념: 변수라면 둘 다 함수에서 사용할 수 있고, 그런 변수는 전역 변수입니다

  

  예:   # 전역 변수 정의

  In [12]: a = 250


In [13]: def text1():
...: print("----text1----% d" %a)

...:


[14]에서: def text2(): (...: 인쇄 ("---- text2 ---- %d" %a)

... :


in [15]: 텍스트1 ()

---- 텍스트1 ---- 250

  [16]: text2()
  --text2----250

 

 지역 변수와 전역 변수의 이름이 같은 경우:
  [23]: a = 250 # 전역 변수

  In [24]: def text1():
   ...:     # 지역 변수
   …:        a = 521
   ...:                                                           int in [24]: def text1():
-- -- %d " %a) ...: #지역 변수

...: A = 666
...: 인쇄 (" ---- text1 ----------- - %d " %a)

.. .:


  In [25]: def text2():
   ...:     print("--text2----%d" %a)

   .. .:


   In [26]: text1 ()
  ----text1----521

   ----text1----666


  In [27]: text2()

   ---text2 ----250

  In [28] ]:

  요약:

   • 함수 외부에서 정의된 변수를 전역 변수라고 합니다  • 전역 변수는 모든
함수

 에서 액세스할 수 있습니다.  • 이름이 다음과 같은 경우 전역 변수는 지역 변수의 이름과 동일하고 지역 변수가 사용됩니다. 이는 지역 뱀을 압도하는 것을 피하기 위한 약간의 트릭입니다

 함수 내에서 전역 변수를 수정하세요:

  In [31]: a = 250

  [32]: def text1():
   ..: a = 520
...: print("----text1----%d" %a)

[33]:

[33]에서: def text2(): %a ..:    global
a
  ...:       a = 666
   …:                                                                     In [34]:
# 호출되는 함수가 없습니다
In [ 35]: print(a)
250

[36]에서:
# Call text1
[37]에서: text1()
----text1-- ​​--520

  [38]에서:
# 다시 인쇄 ---->
   In [39]: print(a)
   250

   In [40]:
# 값이 수정되지 않은 것으로 확인됨
  In [41]:
# Call text2
  In [42]: text2()
  ---text2----666

  In [43]:
# Print a
다시   In [44 ]: print(a)
  6 66

  In [45]:
# 값이 수정되었습니다
  요약:
    • 함수에서 전역 변수를 수정하는 경우 선언에 전역 변수를 사용해야 합니다. 그렇지 않으면 ( 매개 변수가 없는 경우 전달됨) 동일한 변수의 객체가 함수 내에서 재정의됩니다
 

- 변수 유형의 전역 변수와 불변 유형의 전역 변수 - 함수 내에서 수정됨   

ps의 차이점은 다음과 같습니다. 나중에 블로그에서 변수 유형과 불변 유형의 개념을 자세히 설명하세요  예: ------->불변 유형:  In [46]: a = 6

In [47]: def 데모():

a += 1

print(a)
...:

In [48]: 데모()

오류 정보:

   - -------------- ----------------------- -------------- ----------

   UnboundLocalError             역추적(가장 최근 호출 마지막)
    in ( )
    ----> 데모 1개 ()

3 인쇄 (a)

          4

   UnboundLocalError: 할당 전에 지역 변수 'a'가 참조되었습니다

   ------------------------- -------- -----------------------------
  참고: 분명히 수정할 수 없습니다

   - ------>변수 유형:

   In [49]: a = [1,]

  In [50]:

   In [50]: def 데모():
   ...:    a .appnd (2) en ...: PRINT (a)
...:

in [51]: 데모 ()

[1, 2]

in [ 52]: a

아웃 [52]: [ 1, 2]

                                                                                                                 logue Meââ'¬â€¢ 목록의 값은 함수가 실행될 때 함수 내부에서 수정되며 외부에서 인쇄될 때도 변경됩니다.


  요약:

   ○ 함수에서 전역 변수를 수정하는 경우 전역 변수를 사용하여 선언해야 하며, 그렇지 않으면 오류가 발생합니다.

   ○ 전역 변수의 본질은 전역 변수를 사용하지 않고는 함수에서 수정할 수 없습니다
전역 변수 선언is은 전역 변수의 지정을 수정할 수 없습니다, 전역 변수가 새 데이터를 가리킬 수 없다는 것을 의미합니다.   ○
immutable 유형의 전역 변수의 경우 이 가리키는 데이터는 수정될 수 없습니다. 따라서 전역 변수를 사용하지 않으면 전역 변수를 수정할 수 없습니다.   ○ 변수 유형의 전역 변수의 경우 해당 변수가 가리키는 데이터를
수정할 수 있으므로 전역 변수를 사용하지 않을 때는 전역 변수도 수정할 수 있습니다.

위 내용은 파이썬의 기본 포인트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.