数学建模社区-数学中国

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

作者: 1047521767    时间: 2021-10-28 22:06
标题: python学习笔记函数
函数" Y+ `( @5 R$ }7 b( X
定义函数:
/ S! a" ^' \8 E" c2 X/ R' r' ?9 w+ D; Y调用函数7 Z$ v* k4 G0 G
调用之位置实参6 G$ k* s# `8 M& ?
调用之关键字实参
5 j4 v  B, ?$ H/ q调用之实参传递3 W8 M. y) ^8 G( ^. a* Q
带默认值的形参: B7 ~0 n% m0 l1 b+ S
定义函数:8 Z$ \9 U: w+ M0 h
语法格式:! K$ z; ?8 I2 |  {  T0 ^

9 @$ ~( \0 m/ m" \. zdef 函数名 (形式参数1,形式参数2。。。,形式参数n):
9 G1 n8 m3 I5 e& Z( b7 D        函数体6 H5 h$ X) p. A+ K4 O' l/ y0 q" l
def:是python定义的关键字
2 |* d8 X/ m+ ?, ]1 O函数名:每个函数都有函数名,用于函数的调用。函数名属于表示符,最好是动宾格式,表明函数完成的特定功能。例如:print_result, handle_message
8 f. R4 i# _3 e" Q- \5 _形式参数:简称形参,用于调用函数时接收输入(实际参数)。形参用中括号括起来,表示形参是可选的,可以定义,也可以不定义。形参的本质是变量,只应用于函数体,别的地方不生效# S3 z' X% c3 ], \( O
函数体:用于执行特定任务以完成特定功能的主体代码,它对于的代码块必须缩进,如果函数需要返回值,可以使用语句return xxx返回,同时结束函数体的执行,如果函数不要返回值,使用return直接结束函数体执行或者不写正常执行结束,函数体在调用函数时才会被执行,定义函数不会改变程序的执行流程。4 }' O* E  @: s& f) {1 C; X5 z- F

8 l1 N5 V2 L/ c. O3 S" L( K5 b2 Z8 D
def decide_args(arg1,arg2):; }6 M4 A6 i$ Q+ g  Y6 C
        if arg1 and arg2:
/ ?* p, U' |. _! C- g1 k! t9 I                return arg1,arg2
) \0 G0 T7 ^9 ?$ [5 Q' S9 B* n6 e        elif (not arg1) and (not arg2):% r5 A1 w2 q3 Z$ U( ^( h& }- ^
                return
: W$ `  J- {8 w0 K& a        else:5 y* N( w6 ?) r4 [! y/ n' D
                result = arg1 or arg2
; l8 ]4 W  ?+ S& O& vprint(type(decide_args)) #查看类型为function
1 ~" c6 a! ~# U( U  ~. A3 ~+ @) H/ \( X
调用函数

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

0 r; \) d9 U* z% j
! z1 v" L2 F8 u1 W0 g
' {# f$ N# T- _+ N' |
调用之位置实参
, c% o9 l1 s+ a6 Z6 `% L( F8 Z9 n位置实参:传入的实参与形参位置是一 一对应的,更改实参传入顺序,得到的结果也不同
9 U, H* o5 [& ?2 o+ c6 kdef f(a, b, c):* r0 _) s; y4 A& @. J/ X' i* t% H* x, C
    print('a =', a, 'b =', b, 'c =', c)
( }* o. ?( w( ~0 ?3 ]7 f$ W$ u
2 o) z' M, [- S1 t7 r! {* Bf(2, 5, 8)   #传入实参,得到 a=2,b=5,c=8# p+ ^% l. l' Y8 N( O, G
f(5, 8, 2)7 K7 i, u  F# m
f(8, 5, 2)
: `5 B! x- x' h1 P* [定义函数时,如果无法确定位置实参个数,可以在形参前面加一个*,将形参定义为个数可变的形参,从而可以接受0个或任意多个位置实参,位置实参会将形参变为一个元组
2 d# q. C) k2 m2 ^) @/ ^) U) Q4 }$ c% I. A
#!/usr/bin/env python3
" L3 e* N6 G. N, c$ E; J6 H- D+ jdef fun1(*num):
2 Y4 T- W% C0 S    print(num)
% L+ x5 G9 l& s6 Xfun1()+ R" ^' V6 |2 X0 x9 P
fun1(2)) t7 Z, g8 |! R. Z6 Q# z9 y1 B/ O& t
fun1(2,3,4,5,6)
( X5 n; [: m% G+ t$ m( K
6 D' v5 J% _2 z3 N1 j) S& G6 e, i; G# D9 V' T: {
调用之关键字实参

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


1 G8 X& m, i1 R
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)
+ W. M' k5 r' |2 Q  `
带默认值的形参

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

6 L* ?5 I% @! R6 L" U
[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)

) b+ n& |: Z& }0 k# q

& ?& I: Y4 M4 j/ C- |( g% P
1 m) p' ?6 N4 ^. y* K

& x1 \9 h3 s7 u, d, J* Q




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