python中函数的调用格式_函数(概念,基本使用,定义格式,调用格式,参数种类)...

一、函数

1、what

具备某一功能的工具===》函数

工具的使用:

事先准备好工具==========》函数的定义

遇到应用场景拿来就用====》函数的调用

2、why

1、程序的组织结构不清晰,可读性差

2、如果要用到重复的功能,只能拷贝功能的实现代码=》代码冗余

3、可扩展性差

3、how

函数的使用原则:先定义,后调用

定义函数:

def 函数名(参数1,参数2,参数3,...):

"""文档注释"""

代码1

代码2

代码3

...

return 返回值

调用函数:

函数名(值1,值2,值3,...)

ps:函数名尽可能写成动词,不要写成名词

二:函数的基本使用

1、定义函数:申请内存空间把函数体代码保存下来,然后把内存地址绑定给函数名-》函数名=函数的内存地址

defsayhi():print('*'*10)print('hello')print('*'*10)print(sayhi)#打印出来的是函数名的内存地址

2、调用函数: 函数名()=> 函数的内存地址(),会触发函数体代码的运行

sayhi()

sayhi()

sayhi()#可以多次调用,调用一次函数运行一次

三:定义函数的三种格式

1、 无参函数(就是函数没有参数)

defsayhi():print('='*100)

sayhi()

2、 有参函数

defsayhi(s,n):#s = '-'

#n = 20

print(s*n)print('hello')print(s*n)

sayhi('-',20)

3、 空函数

deffunc():pass

四:函数的调用

return : 函数内可以有多个return,但只要执行一次函数就立刻结束,并会把return后的值当作本次调用的结果返回

函数可以有三种形式的返回值

1、return 值:返回的就是该值本身

2、return 值1,值2,值3:返回一个元组

3、没有return:默认返回None

五:函数调用的三种格式

1、 语句形式:单纯地调用一下函数就完了

defsayhi(s,n):print(s*n)print('hello')print(s*n)

sayhi('*',30)

2、 表达式形式:

defmax2(x,y):if x >y:returnxelse:returny

res=max2(11,22) * 12

print(res)

3、 可以把函数的调用当作值传给另外一个函数

defsayhi(s,n):print(s*n)print('hello')print(s*n)

sayhi('*',30)print(sayhi('*',30))

总结:

函数的使用一定要分两个阶段去看:

1、定义阶段:只检测语法,不执行代码

2、调用阶段:执行函数体代码

如果发生的语法错误,定义阶段就会立马检测出来

def func():

print("hello" #语法错误

如果发生的不是语法错误,而是逻辑错误,只能在调用阶段检测到

def func():

xxx #逻辑错误

func()

ps:调用函数时还没定义的函数一定会报错,一定要搞清楚函数定义的两个阶段

示范1:defbar():print('bar')deffoo():print('foo')

bar()

foo()#foo bar

示范2:deffoo():print('foo')

bar()defbar():print('bar')

foo()#foo bar 这里的def bar()在函数定义阶段就已经定义好了

六:函数的参数分为两大类

1、形参:在定义函数时,括号内定义的变量名,称之为形式参数,简称形参=》变量名

2、实参:在调用函数时,括号内传入的值,称之为实际参数,简称实参=》变量值

七:在python中参数的种类

1、位置参数:

(1)位置形参:在函数定义阶段按照从左到右的顺序依次定义形参(变量名),称之为位置形参

特点:必须被传值

deffunc(x,y):print(x,y)

func(1,2)

func(1) #少一个不行

func(1,2,3) #多一个也不行

(2)位置实参:在函数调用阶段按照从左到右的顺序依次定义实参(传入的变量值),称之为位置实参

特点:按照位置传值,一一对应

func(1,2,3,4,5,6)#数量由传入的变量名而定

2、关键字实参:在函数调用阶段按照key=value的形式为指定的形参名传值,该形式称之为关键字实参

特点:在传值时可以完全打乱顺序,但是仍然能够指名道姓地为指定的形参传值

func(x=1,y=2)

注意:可以混用位置实参与关键字实参,但是

1 位置实参必须放在关键字实参的前面

2 不能为同一个形参重复赋值

deffunc(name, age, salary):print(name)print(age)print(salary)

func('egon', 18, salary=3.1)#func('egon',salary=3.1,age=18)#func('egon',salary=3.1,18) # 错误,SyntaxError#func('egon',18,age=19,salary=3.3)# 错误,TypeError

3、默认形参:在函数定义阶段就已经为某个形参赋值,该形参称之为有默认值的形参,简称默认形参

特点: 定义阶段就已经被赋值意味着在函数调用阶段可以不用为其赋值

def func(x,y=2):print(x,y)

func(1) #1 2

func(1,33333)#1 33333

注意:

(1)默认形参应该放在位置形参的后面

def func(y=2,x): #错误

pass

func(1,2)

(2) 默认形参的值通常应该是不可变类型

#达不到用意

def func(name,hobby,hobbies=[]):

hobbies.append(hobby)print("%s 的爱好是:%s" %(name,hobbies))

func("egon",'play') #egon 的爱好是:['play']

func('lili','music') #lili 的爱好是:['play', 'music']

func("jack",'read') #jack 的爱好是:['play', 'music', 'read']

#达到用意

def func(name,hobby,hobbies=None):if hobbies isNone:

hobbies=[]

hobbies.append(hobby)print("%s 的爱好是:%s" %(name,hobbies))

func("egon",'play') #egon 的爱好是:['play']

func('lili','music') #lili 的爱好是:['music']

func("jack",'read') #jack 的爱好是:['read']

(3) 默认形参的值只在函数定义阶段被赋值一次,函数定义之后的改变对默认形参没有影响

m=333

def func(x,y=m): #y=333

print(x,y)

m=44444func(1) #调用后打印1 333 在定义阶段把y赋值为333,调用时如果y不再传值的话就不受影响

func(1,2) #调用后打印1 333 在定义阶段把y赋值为333,调用时如果传值,按照传的值来

#默认形参示范

def register(name,age,gender='male'):print(name)print(age)print(gender)

register('tom',21,)

register('egon',18,'female') #可以传值改变默认值,也可以不传就用默认值

ps:位置形参,一定要传值

默认形参,可以不传值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值