数学建模社区-数学中国

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

作者: 1047521767    时间: 2021-10-28 22:06
标题: python学习笔记函数
函数
- u( z) ?, [$ c+ Y; l' y$ I定义函数:
& Q& g  V9 I$ A; w调用函数
7 c( S, X) m6 C! B! F; B5 ^调用之位置实参8 w" C! b! X5 S# V* Q: k( i7 a
调用之关键字实参+ B. P! [& m+ g6 ^# h# N* H
调用之实参传递. c" b7 Z# }0 Y6 }
带默认值的形参  x6 B& e* F) L- g* ~
定义函数:, t; t4 Y0 u2 ~0 X
语法格式:# X1 y& O; @3 M  H* l& y' @2 i( t
% }& {6 i% Q  M0 ?& ^
def 函数名 (形式参数1,形式参数2。。。,形式参数n):
% y6 x3 c, D5 k% L& S4 ^8 a9 B# a1 D  B        函数体
# t+ C: |5 T2 u3 c( ^: y% N; {def:是python定义的关键字
4 t7 E2 Z! K4 p8 S  }+ i& x函数名:每个函数都有函数名,用于函数的调用。函数名属于表示符,最好是动宾格式,表明函数完成的特定功能。例如:print_result, handle_message1 w+ r4 x$ _, v7 O4 Y' U0 f
形式参数:简称形参,用于调用函数时接收输入(实际参数)。形参用中括号括起来,表示形参是可选的,可以定义,也可以不定义。形参的本质是变量,只应用于函数体,别的地方不生效* ^* g) e7 q8 Y& a( E: r& |0 d
函数体:用于执行特定任务以完成特定功能的主体代码,它对于的代码块必须缩进,如果函数需要返回值,可以使用语句return xxx返回,同时结束函数体的执行,如果函数不要返回值,使用return直接结束函数体执行或者不写正常执行结束,函数体在调用函数时才会被执行,定义函数不会改变程序的执行流程。
# T: n; W9 M, j. O: k9 o( J# |! g9 Q# p! W) q+ A

6 V3 s2 E5 ?) k# vdef decide_args(arg1,arg2):3 e! U9 z- B# ?2 J( g. g9 q- l
        if arg1 and arg2:1 D+ U, Y8 @4 Z/ R+ D
                return arg1,arg2
0 [0 C6 N9 W- @8 ?: u6 W- J        elif (not arg1) and (not arg2):. G, u1 p( w- ^2 G
                return
7 Q2 H: d5 s' {( R& ^! u: w* ]) Y        else:' ?. J6 u0 F" n2 x' Z
                result = arg1 or arg2
9 ?2 @; _, W; M6 w" Nprint(type(decide_args)) #查看类型为function
" m6 |- e+ ]& M; v# J3 w5 T. o0 O4 D  O3 q6 O2 ]1 |
调用函数

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


8 O1 {4 a& Q: M  Z) p

% v6 k; a2 c: {" J6 w% C( n1 y# z2 d9 l. O
调用之位置实参1 Y+ n, a& L8 w
位置实参:传入的实参与形参位置是一 一对应的,更改实参传入顺序,得到的结果也不同
% a! d, P" D1 Fdef f(a, b, c):( ]% O$ i( P! O" L7 }) g* [8 c
    print('a =', a, 'b =', b, 'c =', c)
/ ~: L& H$ n8 L1 X% a( [
: C( f6 P* q: J7 mf(2, 5, 8)   #传入实参,得到 a=2,b=5,c=8
8 Q9 V( i; z% ]$ `7 P0 Nf(5, 8, 2)
1 t( r  a3 r0 y* ]/ o' R4 {f(8, 5, 2)$ E! D" B- y. s7 ~  V
定义函数时,如果无法确定位置实参个数,可以在形参前面加一个*,将形参定义为个数可变的形参,从而可以接受0个或任意多个位置实参,位置实参会将形参变为一个元组
* I# z, }0 [& G7 t6 y8 X6 U
; [/ J! B3 E: |6 @! G0 R- w' v: v#!/usr/bin/env python3' w, M. _! t( U$ e8 _+ L& C" D% U$ V
def fun1(*num):' Q& z8 f+ b7 L
    print(num)
! f! }* v  y% ]3 Z. A) xfun1()% l. u6 x% y) g* s4 e* p
fun1(2)
6 h/ k# ?: ^; S5 vfun1(2,3,4,5,6)
3 A3 ~9 _7 M  C5 L- `. K: j
1 X2 o6 A5 Q3 e. k
: M. _; \4 t2 `调用之关键字实参

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


8 g6 q* c8 M5 D& U4 z! {( Q
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)
- ?* O' O3 q4 u- V
带默认值的形参

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


9 u1 [  R7 }' Z/ G% I/ N7 L" d, M
[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' }8 r9 M8 ~+ [8 F' b* e
: |( H3 _, i% |
8 u. @3 q' d2 l! j6 h9 k/ ^$ b! d

1 f5 _4 F; [; m; X




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