数学建模社区-数学中国

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

作者: 1047521767    时间: 2021-10-28 22:06
标题: python学习笔记函数
函数: M( ^5 }7 d0 [! d! q' n
定义函数:5 p" x+ z  k$ K5 f3 U
调用函数; Q! V+ J$ M0 b# o
调用之位置实参/ Q& x* T9 X5 d2 x5 A
调用之关键字实参
$ F$ m" x' A. I6 A调用之实参传递1 V5 P" R; J) z/ j: b( x9 ~( o
带默认值的形参+ p. }* ?* m2 I0 H8 ~2 {
定义函数:
6 `5 z" i- ]+ S$ Y+ D3 g0 J语法格式:$ ?  [* p* W8 ^6 A: w2 ?
" u8 I  k9 t" p
def 函数名 (形式参数1,形式参数2。。。,形式参数n):: ~/ W* j8 ~! K3 k, u
        函数体
" x4 i* d) i. P) k( {def:是python定义的关键字
6 Y2 D+ X! k$ m函数名:每个函数都有函数名,用于函数的调用。函数名属于表示符,最好是动宾格式,表明函数完成的特定功能。例如:print_result, handle_message
% y6 d4 S; J: |3 K2 V形式参数:简称形参,用于调用函数时接收输入(实际参数)。形参用中括号括起来,表示形参是可选的,可以定义,也可以不定义。形参的本质是变量,只应用于函数体,别的地方不生效
* s8 H. c3 T8 k  s0 X3 ~* V函数体:用于执行特定任务以完成特定功能的主体代码,它对于的代码块必须缩进,如果函数需要返回值,可以使用语句return xxx返回,同时结束函数体的执行,如果函数不要返回值,使用return直接结束函数体执行或者不写正常执行结束,函数体在调用函数时才会被执行,定义函数不会改变程序的执行流程。% }" x+ c; ~8 f, ?- F2 C

$ H% T/ u* |0 O5 K1 U
6 a. q: [& i& J* sdef decide_args(arg1,arg2):
2 ~  u/ j) w8 ~, u5 M% P        if arg1 and arg2:- Q6 h* @+ L7 D* P* |/ ~
                return arg1,arg26 c" N* [% _5 ~
        elif (not arg1) and (not arg2):
/ a, W5 X9 v+ B- q9 P$ [                return5 V& s+ @4 r! T
        else:" ~% s" _% F. @$ L1 v
                result = arg1 or arg2
; W7 H- [9 v; z+ n: o7 b: N: Vprint(type(decide_args)) #查看类型为function! u' x9 s; a, p1 G& l0 S1 z
8 Y2 T/ f/ h  Q7 z! X( J3 w5 X
调用函数

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


8 j6 z1 z2 i( |7 ~4 L$ a
# O$ Z3 j0 s. E# V3 P

. H: [4 S9 Q1 V: u' k1 H0 I6 I调用之位置实参
& u; H2 [2 E8 ~0 ]0 S, {& f" ]5 y8 `位置实参:传入的实参与形参位置是一 一对应的,更改实参传入顺序,得到的结果也不同9 a2 }4 U9 e4 W/ [; G2 ?* g
def f(a, b, c):8 N; n' B, u# X% i. g3 y
    print('a =', a, 'b =', b, 'c =', c)) T' c/ N# S: j8 o* e3 J, k& F+ G
* N  P: X' D4 |7 e) U; a* a
f(2, 5, 8)   #传入实参,得到 a=2,b=5,c=8
2 U6 R' J/ W5 G; j. t# df(5, 8, 2)# g6 P1 S) g3 G/ M3 P0 J4 A- e
f(8, 5, 2)
5 {! t/ H9 J$ e7 Q& f) U/ u- R定义函数时,如果无法确定位置实参个数,可以在形参前面加一个*,将形参定义为个数可变的形参,从而可以接受0个或任意多个位置实参,位置实参会将形参变为一个元组0 n; f; _+ H3 P, H

( T" b. W1 c# b#!/usr/bin/env python3
9 p5 d1 e7 G* K8 d/ sdef fun1(*num):: p3 }/ ^5 n2 P
    print(num)
1 b5 r7 A1 x( _3 Gfun1()
1 u( i4 H% _. x. I% a4 L! vfun1(2): g" R: m8 G* L" K& J( p: m! I
fun1(2,3,4,5,6)
/ U# @. R1 z# z& |. Q9 |) F$ @
8 s2 [: B& L; `2 m
: W( ]9 l, h2 z2 a4 \% q$ M' I调用之关键字实参

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


0 ^9 E' C5 l7 v% {+ L& ]8 h' |
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)
: z* G) A+ ^4 |* T) ]9 W! F
带默认值的形参

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


: V- L* f5 E0 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)
% A4 @# W4 \- h" M% C# P

8 p# \" C6 ]4 H: m- T; F. E
# w( g9 t* y% e. E6 O
+ \( _4 z" V8 c





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