数学建模社区-数学中国

标题: python学习笔记函数 [打印本页]

作者: 1047521767    时间: 2021-10-28 22:06
标题: python学习笔记函数
函数9 {2 e, ~( o$ L" q8 m
定义函数:
+ f5 S: i6 [% B% b! j1 K调用函数" k, g1 c' j5 i4 J
调用之位置实参
' ^( @# b+ k5 Z: k/ e% d! k, Q+ J调用之关键字实参  t$ m  v3 k& T( q" C' \1 Y4 `
调用之实参传递
, @+ O2 f% n2 Q9 {带默认值的形参3 O* y; [8 f0 p) E. T& p# [
定义函数:
1 O( a: ~3 I4 r! l1 {语法格式:8 M# y/ g' ~. B0 `" c$ q7 A9 x; J
( k+ F, r1 D6 U; R1 {1 @, Q
def 函数名 (形式参数1,形式参数2。。。,形式参数n):
1 M" n  e0 N9 n7 m3 |        函数体0 \* n3 I* @& O4 F
def:是python定义的关键字! z( A# w+ h  D0 A
函数名:每个函数都有函数名,用于函数的调用。函数名属于表示符,最好是动宾格式,表明函数完成的特定功能。例如:print_result, handle_message
" c5 i/ b. @8 x" Q7 o; J形式参数:简称形参,用于调用函数时接收输入(实际参数)。形参用中括号括起来,表示形参是可选的,可以定义,也可以不定义。形参的本质是变量,只应用于函数体,别的地方不生效
, y7 [6 L" I5 B" D函数体:用于执行特定任务以完成特定功能的主体代码,它对于的代码块必须缩进,如果函数需要返回值,可以使用语句return xxx返回,同时结束函数体的执行,如果函数不要返回值,使用return直接结束函数体执行或者不写正常执行结束,函数体在调用函数时才会被执行,定义函数不会改变程序的执行流程。/ R( u& o& S4 ~8 |; f/ I
/ e$ ^. d9 j9 l3 Q! s$ f. U; m# c
% }+ Z" Q3 L" m9 Z. _8 m
def decide_args(arg1,arg2):
' {  b) Z. x0 n- t, Z) P& E+ ?. p        if arg1 and arg2:
5 n+ O5 {) Z8 E$ k) E                return arg1,arg2
2 }# k" _: v; l/ k        elif (not arg1) and (not arg2):
0 q0 s# x" I: Z  t                return
% d/ e# a7 e6 j' _) c4 h        else:
" N) n; H7 C6 c1 ?8 S+ z                result = arg1 or arg2
& v/ I7 b7 B$ L5 gprint(type(decide_args)) #查看类型为function
3 |- h& c) p" L5 P- y2 v
' k! }9 l5 c8 _" b' P* ~) T调用函数

调用函数时,每个实参都被用于初始化相应的形参,所有形参被初始化后,函数体对应的代码块进行执行,执行完成后再跳回调用函数的地方,继续执行下一条语句

0 t8 l& r  T. T; J+ Y3 }" G
( J' m2 D* `% X* B6 I

( ?5 M# _; q0 m" Z调用之位置实参
. e! w5 A8 j1 T: i7 A位置实参:传入的实参与形参位置是一 一对应的,更改实参传入顺序,得到的结果也不同
" s0 i; K) [  j. s1 {% ?. w2 }def f(a, b, c):
0 U9 L* Z9 w0 R/ ~    print('a =', a, 'b =', b, 'c =', c)4 s  X: b1 I$ l0 }) `0 Z: V" {

: J- v' {6 Q' \% D( @! ~: rf(2, 5, 8)   #传入实参,得到 a=2,b=5,c=8) Y, a6 b. V( i6 N
f(5, 8, 2)
, ^+ Q3 ]! w, n% `; H# t/ o2 ~7 Y" Uf(8, 5, 2)  N0 y/ `5 x+ n. b, d
定义函数时,如果无法确定位置实参个数,可以在形参前面加一个*,将形参定义为个数可变的形参,从而可以接受0个或任意多个位置实参,位置实参会将形参变为一个元组
. H' q  [! D. m6 T7 b+ r0 ~- [0 ~4 D  r9 r3 ~4 P$ e6 [
#!/usr/bin/env python36 A, i5 T8 e8 u0 z$ K  P
def fun1(*num):7 @  e1 z9 }; y- E1 t  U0 L
    print(num)
4 w3 ]3 B0 a) e# |" N% ?fun1()& u1 {: U$ N# I, \
fun1(2)
. x# K: h0 w: A* J; N9 Y8 }) pfun1(2,3,4,5,6)
( g6 t. _$ P! k& H, N5 A% R
6 h, Q* o2 i; B0 s) J
& U3 [* p) m! \- }- r0 x5 K- V3 U调用之关键字实参

关键字实参:传递形式为:形参名 = 实参值,使形参和实参一 一对应,更改传入实参顺序,不影响结果,位置实参和关键字实参组合时,关键字实参一定要写最后面,否则会报错


$ j  U! x) v8 A% G# t3 {
def f(a, b, c):
    print('a =', a, 'b =', b, 'c =', c)
f(b = 5,a = 2,c = 8)   #传入实参,得到 a=2,b=5,c=8
f(2,5,c = 8)
1 }( m# A* b7 R! E1 R  c1 }" k
带默认值的形参

给形参一个值,如果没写实参,则使用形参的默认值,作用是简化实参

( x2 n7 `6 {" o! @$ r
[color=rgba(0, 0, 0, 0.501960784313726)]#!/usr/bin/env python3
[color=rgba(0, 0, 0, 0.501960784313726)]def __d__(a,b = 5):
[color=rgba(0, 0, 0, 0.501960784313726)]    print('a=',a,'b=',b)
[color=rgba(0, 0, 0, 0.501960784313726)]__d__(1)
3 J! n$ [, V& s( L! g8 ?

2 [, {* V6 b; L6 x, y  W
; s; w1 S5 T6 L4 J' X* |

1 {# i& `, R/ ]6 Q8 ?' c. p




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5