>백엔드 개발 >파이썬 튜토리얼 >Python 함수 기본 소개

Python 함수 기본 소개

巴扎黑
巴扎黑원래의
2017-08-05 16:10:171841검색

이 글에서는 문장을 함수로 정리하는 방법과 매개변수의 개념, 프로그램에서의 사용법에 대해 소개하겠습니다. 도움이 필요한 친구들이 참고하면 됩니다.

파이썬 함수는 def, def라는 새로운 문장으로 작성됩니다. 실행 가능 명령문--Python이 def를 실행할 때까지 함수는 존재하지 않습니다.

함수는 할당으로 전달되고 매개변수는 할당으로 함수에 전달됩니다.

def 문은 함수 개체를 생성하고 이를 변수 이름에 할당합니다.

복사 코드 코드는 다음과 같습니다.


def function_name(arg1,arg2[,...]):

[반환 값]

반환 문이 없으면 반환 값은 필요하지 않습니다. Python은 기본적으로 None 값을 반환합니다.

함수 이름 명명 규칙:

함수 이름은 밑줄 또는 문자로 시작해야 하며 문자, 숫자 또는 밑줄의 조합을 포함할 수 있습니다. 구두점은 사용할 수 없습니다.

함수 이름은 대소문자를 구분합니다.

함수 이름은 예약어일 수 없습니다.

Python은 객체를 저장하기 위해 네임스페이스 개념을 사용합니다. 이 네임스페이스는 객체가 다른 범위에 존재하는 영역입니다. 다음은 다양한 객체에 대한 범위 규칙입니다.

각 모듈에는 자체 전역 범위가 있습니다.

함수에 의해 정의된 개체는 로컬 범위에 속하며 함수 내에서만 유효하며 전역 범위의 개체에 영향을 주지 않습니다.

global 키워드를 사용하여 선언하지 않는 한 할당된 개체는 로컬 범위에 있습니다.

LGB 규칙은 Python이 이름을 찾는 규칙입니다. 다음은 LGB 규칙입니다.

1. 대부분의 이름 참조는 첫 번째 로컬(Local), 두 번째 글로벌(Global), 세 번째 내장에서 검색됩니다. (빌드) -in).

코드를 복사하세요 코드는 다음과 같습니다:


>>> a=2
>>> b=2
>>> .. test= a*b
... Return test
>>>print test(10)
20

b는 로컬 범위에서 발견되고, a는 전역 범위에서 발견됩니다.

2. 전역 범위의 개체를 로컬 범위에서 변경하려면 전역 키워드를 사용해야 합니다.

코드를 복사하세요 코드는 다음과 같습니다.

#global을 사용하지 않는 상황
>>> name="Jims"
>>> def set():
.. . name=" ringkee"
...
>>> set()
>>> 이름 인쇄
Jims

#global 사용 후 상황

>>> "
> >> def set1():
... 전역 이름
... name="ringkee"
...
>>> set1()
>>> print name
ringkee

3. 'global' 선언은 할당된 이름을 해당 이름이 포함된 모듈의 범위에 매핑합니다.

함수의 매개변수는 함수와 외부 세계를 연결하는 다리 역할을 하며 외부에서 전달된 값을 받을 수 있습니다. 매개변수 전달 규칙은 다음과 같습니다.

4. 함수에 매개변수 이름을 지정해도 호출자에게 영향을 주지 않습니다.

코드를 복사하세요 코드는 다음과 같습니다:

>>> a=1
>>> def test(a):
... a=a+1
.. . 인쇄 a
...
> 누구.


코드 복사
코드는 다음과 같습니다:

>>> a=1

>>b=[1,2]

>>> b): ... a=5... b[0]=4

... 인쇄 a,b

...
>>> test(a,b)
5 [4, 2]
>>> 예:


코드 복사
코드는 다음과 같습니다.


>>> def test(a,b):
... return a+b
...
>>> ; test(1 ,2) #숫자 유형
3

>>> test("a","b") #문자 유형

'ab'

>>> 11]) # 목록

[12, 11]

함수의 매개변수는 전달된 값을 받습니다. 매개변수는 다음과 같은 기본 매개변수로 나눌 수 있습니다.


def function(ARG=VALUE)
튜플 매개변수:

def 함수(*ARG)
사전 매개변수:

def 함수(**ARG)
일부 함수 규칙:

기본값은 기본이 아닌 매개변수 뒤에 와야 합니다.

단일 함수 정의에서는 튜플 매개변수(*ARG)와 사전 매개변수(**ARG)를 사용합니다.

튜플 매개변수는 연결 매개변수와 기본 매개변수 뒤에 와야 합니다.

사전 매개변수는 마지막에 정의해야 합니다.

1. 일반적으로 사용되는 함수
1.abs(x)

abs()는 숫자의 절대값을 반환합니다. 복소수가 주어지면 반환 값은 복소수의 모듈러스입니다.

코드 복사 코드는 다음과 같습니다.


>>>print abs(-100)
100
>>>print abs(1+2j)
2.2360679775

2. callable(object )

callable() 함수는 객체가 호출 가능한지 테스트하는 데 사용됩니다. 그렇다면 1(true)을 반환하고 그렇지 않으면 0(false)을 반환합니다. 호출 가능 객체에는 "호출" 메소드를 정의한 함수, 메소드, 코드 객체, 클래스 및 클래스 인스턴스가 포함됩니다.

코드 복사 코드는 다음과 같습니다:


>>> a="123"
>>> print callable(a)
0
>>> chr)
1

3.cmp(x,y)

cmp() 함수는 두 객체 x와 y를 비교하고, 비교 결과에 따라 정수를 반환합니다. xy인 경우 1을 반환하고, x==y인 경우 0을 반환합니다.

코드 복사 코드는 다음과 같습니다.


>>>a=1
>>>b=2
>>>c=2
>>> ; cmp(a,b)
-1
>>> cmp(b,a)
1
>> 인쇄 cmp(b,c)
0

4.pmod( x,y )

pmod(x,y) 함수는 나누기 연산을 완료하고 몫과 나머지를 반환합니다.

코드 복사 코드는 다음과 같습니다.


>>> pmod(10,3)
(3, 1)
>>> pmod(9,3)
(3, 0)

5.isinstance(object,class-or-type-or-tuple) -> bool

테스트 객체 유형

코드 복사 코드는 다음과 같습니다.


>>> ; a='isinstance 테스트 '
>>> isinstance(a,str)
True
>>b,str)
False
> > isinstance(b,int)
True


다음 프로그램은 isinstance 함수의 사용을 보여줍니다.

코드 복사

코드는 다음과 같습니다.

def displayNumType(num ; 숫자입니다!!! '

displayNumType(-69)

displayNumType(999999999999999999999999L)
displayNumType(565.8)
displayNumType(-344.3+34.4j)
displayNumType('xxx')


코드 실행 결과는 다음과 같습니다.


복사 code
코드는 다음과 같습니다.

-69는 유형의 숫자입니다. int

9999999999999999999999999는 유형의 숫자입니다. long

565.8은 유형의 숫자입니다. float

(-344.3+34.4j)은 숫자의 유형입니다. 유형 : complexxxx는 전혀 숫자가 아닙니다!!!

6.len(object) -> 정수

len() 함수는 문자열과 시퀀스의 길이를 반환합니다.


코드 복사
코드는 다음과 같습니다.

>>> len("aa")

2

>> len([1,2])

2

7 .pow( x,y[,z])


pow() 함수는 x를 밑으로, y를 지수로 하여 거듭제곱을 반환합니다. z 값이 주어지면 함수는 x의 모듈로 z에 대한 y 거듭제곱의 값을 계산합니다.


코드 복사
코드는 다음과 같습니다.

>>> print pow(2,4)

16

>>> print pow(2,4,2)

0> ;> > print pow(2.4,3)13.824


8.range([lower,]stop[,step])

range() 함수는 매개변수에 따라 연속적으로 정렬된 정수 목록을 생성할 수 있습니다.


코드 복사
코드는 다음과 같습니다.

>>> range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

> >> 범위(1,10)

[1, 2, 3, 4, 5, 6, 7, 8, 9]>>> 범위(1,10,2)[1, 3 , 5, 7, 9]


9.round(x[,n])

round() 함수는 부동 소수점 숫자 x의 반올림된 값을 반환합니다. n 값이 주어지면 소수점 이하 자릿수를 나타냅니다.

코드 복사 코드는 다음과 같습니다.


>>> round(3.333)
3.0
>>> round(3)
3.0
>>> )
6.0

10.type(obj)

type() 함수는 객체의 데이터 유형을 반환할 수 있습니다.

코드 복사 코드는 다음과 같습니다.


>>> type(a)

>>> type(copy)
>>> type(1)

11.xrange([lower,]stop[,step])

xrange() 함수는 다음과 유사합니다. range(), 그러나 xrnage()는 목록을 생성하지 않지만 목록처럼 작동하지만 필요할 때만 목록 값을 계산하는 xrange 객체를 반환합니다. 이 기능은 목록이 클 때 메모리를 절약할 수 있습니다.

코드 복사 코드는 다음과 같습니다.


>>> a=xrange(10)
>>> print a[0]
0
>>> [1]
1
>>> print a[2]
2

2. 내장형 변환 함수
1.chr(i)

chr() 함수는 ASCII에 해당하는 문자열을 반환합니다. 암호.

코드 복사 코드는 다음과 같습니다.


>>> print chr(65)
A
>> print chr(66)
B
>> chr(65) )+chr(66)
AB

2.complex(real[,imaginary])

complex() 함수는 문자열이나 숫자를 복소수로 변환할 수 있습니다.

코드를 복사하세요 코드는 다음과 같습니다:


>>> complex("2+1j")
(2+1j)
>>> (2+0j )
>>> 복합(2,1)
(2+1j)
>>> 복합(2L,1)
(2+1j)

3.float( x)

float() 함수는 숫자나 문자열을 부동 소수점 숫자로 변환합니다.

코드 복사 코드는 다음과 같습니다.

>>> float("12")
12.0
>>> float(12L)
12.0
>> (12.2)
12.199999999999999

4.hex(x)

hex() 함수는 정수를 16진수로 변환할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

>>> hex(16)
'0x10'
>>> hex(123)
'0x7b'

5.long (x[ ,base])

long() 함수는 숫자와 문자열을 긴 정수로 변환합니다. base는 선택적 기수입니다.

코드 복사 코드는 다음과 같습니다.

>>> long("123")
123L
>>> long(11)
11L

6.list(x )

list() 함수는 시퀀스 개체를 목록으로 변환합니다. 예:

코드 복사 코드는 다음과 같습니다.

>>> list("hello world")
['h', 'e', ​​​​'l', 'l' , 'o', '', 'w', 'o', 'r', 'l', 'd']
>>> list((1,2,3,4))
[1 , 2, 3, 4 ]

7.int(x[,base])

int() 함수는 숫자와 문자열을 정수로 변환하며, base는 선택적 기수입니다.

코드 복사 코드는 다음과 같습니다.

>>> int(3.3)
3
>> int(3L)
3
>> 13")
13
>>> int("14",15)
19

8.min(x[,y,z...])

min() 함수는 최소값을 반환합니다. 주어진 매개변수 중 매개변수는 시퀀스일 수 있습니다.

코드 복사 코드는 다음과 같습니다.

>>> min(1,2,3,4)
1
>>> (2, 3,4))
(1, 2, 3)

9.max(x[,y,z...])

max() 함수는 주어진 매개변수의 최대값을 반환합니다. 시퀀스가 될 수 있습니다.

코드 복사 코드는 다음과 같습니다.

>>> max(1,2,3,4)
4
>>> (2, 3,4))
(2, 3, 4)

10.oct(x)

oct() 함수는 주어진 정수를 8진수로 변환할 수 있습니다.

코드를 복사하세요 코드는 다음과 같습니다:


>>> oct(8)
'010'
>>> oct(123)
'0173'

11.ord (x)

ord() 함수는 문자열 매개변수의 ASCII 코드 또는 유니코드 값을 반환합니다.

코드 복사 코드는 다음과 같습니다:


>>> ord("a")
97
>>>d(u"a")
97

12. str(obj )

str() 함수는 객체를 인쇄 가능한 문자열로 변환합니다.

코드 복사 코드는 다음과 같습니다.


>>> str("4")
'4'
>>>str(4)
'4'
> ;> str(3+2j)
'(3+2j)'

13.tuple(x)

tuple() 함수는 시퀀스 객체를 튜플로 변환합니다.

코드를 복사하세요 코드는 다음과 같습니다:


>>> tuple("hello world")
('h', 'e', ​​​​'l', 'l', ' o', '', 'w', 'o', 'r', 'l', 'd')
>>> tuple([1,2,3,4])
(1, 2 , 3, 4)

3. 시퀀스 처리 함수
1. len(), max(), min() 등 일반적으로 사용되는 함수도 시퀀스에 사용할 수 있습니다.

2.filter(function,list)

filter()가 호출되면 시퀀스의 각 항목에 함수를 적용하고 함수가 true 값을 반환하면 모든 항목을 반환하므로 모든 항목을 필터링합니다.

코드 복사 코드는 다음과 같습니다:


>>> def nobad(s):
... Return s.find("bad") == -1
...
> ;> s = ["나쁜","좋은","나쁜","우리"]
>>> 필터(nobad,s)
['좋은', '우리']

이 예에서는 s 시퀀스의 모든 항목에 nobad() 함수 적용을 전달하고 "bad"를 포함하는 모든 항목을 필터링합니다.

3.map(function,list[,list])

map() 함수는 시퀀스의 모든 항목에 함수를 적용하고 목록을 반환합니다.

코드를 복사하세요 코드는 다음과 같습니다:


>>> import string
>>> s=["python","zope","linux"]
>> ;> map (string.capitalize,s)
['Python', 'Zope', 'Linux']

map()은 동시에 여러 목록에 적용할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.


>>> 가져오기 연산자
>>> 1]
> ;>> map(operator.mul,s,t) # s[i]*t[j]
[3, 4, 3]

함수 대신 None 값을 전달하는 경우 , 그러면 map()은 각 시퀀스의 해당 요소를 결합하고 튜플을 반환합니다. 예:

코드 복사 코드는 다음과 같습니다.


>>> a=[1,2];b=[3,4];c=[5,6]
> >> 맵(없음,a,b,c)
[(1, 3, 5), (2, 4, 6)]

4.reduce(function,seq[,init])

reduce () 함수 획득 시퀀스의 처음 두 항목을 가져와 제공된 함수에 전달합니다. 결과를 얻은 후 시퀀스의 다음 항목을 가져와 결과와 함께 함수에 전달하는 방식으로 모든 항목이 반환됩니다. 처리되었습니다.

코드 복사 코드는 다음과 같습니다.


>>> import Operator
>>> *3) *4)*5
120
>>> Reduce(operator.mul,[2,3,4,5],1) # (((1*2)*3)*4)* 5
120
>>> Reduce(operator.mul,[2,3,4,5],2) # (((2*2)*3)*4)*5
240

5 .zip( seq[,seq,...])

zip() 함수는 해당 항목을 두 개 이상의 시퀀스로 결합하여 튜플 형식으로 반환할 수 있습니다. 모든 항목을 가장 짧은 시퀀스로 처리한 후 중지합니다.

코드 복사 코드는 다음과 같습니다.


>>> zip([1,2,3],[4,5],[7,8,9])
[(1, 4, 7 ), (2, 5, 8)]

매개변수가 시퀀스인 경우 zip()은 다음과 같이 각 항목을 튜플 형식으로 반환합니다.

코드 복사 코드는 다음과 같습니다.


>>zip((1,2,3,4,5))
[(1,), (2,), (3,), (4,), (5,)]
>> zip([1,2,3,4,5])
[(1,), (2,), (3,), (4,), (5,)]

4. 기타
def 문은 실행 시 새로운 함수 개체를 생성하여 변수 이름에 할당합니다. Python의 모든 문은 실시간으로 실행됩니다.

문장이므로 def는 문이 나타날 수 있는 모든 곳에 나타날 수 있습니다. 심지어 다른 문에 중첩되어 있어도 됩니다.

코드 복사 코드는 다음과 같습니다.

if test:
def fun():
              .. .
그 외:
                                                                                                >
코드는 다음과 같습니다.


>> import math
> ;>> del 문 정의 함수:

코드 복사

코드는 다음과 같습니다.

>>> return 'Hello, '+name+'!'

>>> print hello( 'world')

Hello, world!

>>> print hello('Gumby')안녕, 검비!

fibnacci 시퀀스 함수 작성:


코드 복사
코드는 다음과 같습니다.


> ;>> def fibs(num):
​ ​ result=[0,1]

​ ​ for i 범위(숫자-2):

​ ​ result.append(result[-2]+result[-1])

​ ​ 결과 반환

>>> fibs(10)[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]>>> fibs(15)

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 , 89, 144, 233, 377]



함수 내 매개변수에 값을 할당해도 외부 변수의 값은 변경되지 않습니다.


코드 복사
코드는 다음과 같습니다.

>> > def try_to_change(n):

   n='Mr.Gumby'

>> name='Mrs.Entity'>>> try_to_change(name )>>> 'Mrs.Entity'


문자열(및 튜플과 숫자)은 불변이므로 매개변수를 만들 때 변경되지 않지만 변수인 경우 목록과 같은 데이터 구조를 매개변수로 사용하면 어떻게 되나요?


코드 복사
코드는 다음과 같습니다.


>>> name='Mrs.Entity'
>>> try_to_change(name)
>>>'Mrs.Entity '

>>> def 변경(n):

   n[0]='Mr.Gumby'

>>name=['Mrs .Entity', 'Mrs.Thing']> ;>> 변경(이름)>>> name

['Mr.Gumby', 'Mrs.Thing']



매개변수가 변경되었습니다. 이것이 이전 예와의 중요한 차이점입니다

함수를 사용하지 않고 다시 수행하세요.


코드 복사

코드는 다음과 같습니다.

>>> name=['Mrs.Entity','Mrs.Thing' ]>> > n=name #한 번 더 매개변수 전달 동작을 시뮬레이션합니다>>> n[0]='Mr.Gumby' #목록 변경

>>> name

[' Mr.Gumby', 'Mrs.Thing']


두 변수가 동시에 목록을 참조하는 경우 이러한 상황을 방지하려면 시퀀스에 있을 때 목록의 복사본을 만들 수 있습니다. 슬라이스할 때 반환되는 슬라이스는 항상 복사본이므로 전체 목록의 슬라이스를 복사하면 복사본이 생성됩니다.


코드 복사

코드는 다음과 같습니다.



>>> =['Mrs.Entity','Mrs.Thing']
>>> n=names[:]
>> n은 이름입니다

False

>>>

True

지금 n을 변경해도 이름에는 영향을 미치지 않습니다.

코드 복사

코드는 다음과 같습니다.


>> n[0]='Mr.Gumby'
>> n
['Mr.Gumby', 'Mrs.Thing']
>>> 'Mrs.Entity', 'Mrs.Thing']
>>> 변경(이름[:])
>>> 이름
['Mrs.Entity', 'Mrs.Thing']

키워드 매개변수 및 기본값

매개변수 순서는 매개변수 이름을 제공하여 제공할 수 있습니다(단, 매개변수 이름과 값은 일치해야 함).

코드 복사 코드는 다음과 같습니다.

>> > def hello(인사말, 이름):
              print '%s,%s!'%(인사말, 이름)
>>> hello(greeting='hello', name='world!')
hello , world!!

키워드 매개변수의 가장 강력한 점은 매개변수에 기본값을 제공할 수 있다는 것입니다.

코드 복사 코드는 다음과 같습니다.

>>> hello_1(greeting='hello',name= 'world!'):
​​'%s,%s!'%(greeting,name)

>>> hello_1()

hello,world! !
>>> hello_1('인사말')
안녕하세요, 세계!!
>


>

> 2,3)

:

코드 복사
코드는 다음과 같습니다.

>>> def print_params_2(title,*params):

  print title

print params

>>> ',1,2,3)params:

(1, 2, 3)

>>> print_params_2('Nothing:')
Nothing :
()


별표는 "나머지 위치를 수집함"을 의미합니다. 매개변수". 컬렉션에 요소가 제공되지 않으면 params는 빈 튜플입니다

그러나 키워드 매개변수는 처리할 수 없습니다.

코드 복사

코드는 다음과 같습니다.

>>> print_params_2('Hmm ...',something=42)

추적(가장 최근 호출 마지막):

파일 "", 라인 1, in < ;module>
      print_params_2('흠...',something=42 )
TypeError: print_params_2()에 예상치 못한 키워드 인수 'something'이 있습니다

"**"를 사용해 보세요:


코드를 복사하세요
코드는 다음과 같습니다:

>>> **params):

   인쇄 매개변수

>>> print_params(x=1,y=2,z=3)

{'y': 2 , 'x': 1, 'z': 3}

>>> def parames(x,y,z=3,*pospar,**keypar):   print x,y,z   print pospar

print keypar


>>> ,2,3,5,6,7,foo=1,bar=2)
1 2 3
(5, 6, 7)
{'foo': 1, 'bar': 2}
>> > parames(1,2)
1 2 3

()

{}

>> def print_params_3(**params):

   인쇄 params >>> y=2,z=3)

{'y': 2, 'x': 1, 'z': 3}

>>> #Return 튜플이 아니라 사전입니다
>>> ; # '#'과 '##'
>>> def print_params_4(x,y,z=3,*pospar,**keypar):

  print x,y,z

  print pospar
  print keypar

>>> print_params_4(1,2,3,5,6,7,foo=1,bar=2)
1 2 3
(5 , 6, 7)

{'foo': 1, '바': 2}

>>> print_params_4(1,2)
1 2 3
()
{}

위 내용은 Python 함수 기본 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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