python函数定义的规则是什么_Python之定义函数

Python之定义函数

一、函数的写法:

#语法

def函数名(参数1,参数2,参数3,...):'''注释'''函数体return返回的值#函数名要能反映其意义

ContractedBlock.gif

ExpandedBlockStart.gif

1 def auth(user:str,password:str)->int:2 '''

3 auth function4 :param user: 用户名5 :param password: 密码6 :return: 认证结果7 '''

8 if user == 'george' and password == '123':9 return 1

10 #print(auth.__annotations__) #{'user': , 'password': , 'return': }

11

12 user=input('用户名>>:').strip()13 pwd=input('密码>>:').strip()14 res=auth(user,pwd)15 print(res)

例子

1 defmylen():2 s = 'Hello George'

3 length =04 for i ins:5 length += 1

6 returnlength7 leng =mylen()8 print(leng)9 #return 返回的length的值给函数mylen

10 #函数mylen()在将值付给leng变量

11 #在打印leng就是结果了

二、函数的返回值:

函数的返回值可以是任意的数据类型

如果有返回值,必须要用变量接收才会有效果

deffunc():

a=111b=[1,2,3]returnb

ret=func()print(ret)

当有两个返回值时,返回的类型是元组类型

deffunc():

a=111b=[1,2,3]returna,b

ret=func()print(type(ret))print(ret)

函数也可以没有返回值,在不写return的时候,一个函数默认的返回值是‘None’

deffunc1():

a=111b=[1,2,3]

ret=func1()print(ret)

当只写一个return的时候,函数的返回值为None。

deffunc2():

a=111b= [1,2,3,]returnret=func2()print(ret)

return None的时候,函数的返回值也为None(几乎不用)

deffunc3():

a= 111b= [1,2,3]returnNone

ret=func3()print(ret)

当函数执行到return时,就结束了当前的函数。只打印1111,如果没有return,就打印1111和2222。

deffunc4():print(1111)return

print(2222)

func4()

deffunc5():for i in range(10):if i == 6:return

else:print(i)

func5()

总结:

#函数的返回值为None有三种情况

#1.不写返回值

#2.只写一个return

#3.return None (几乎不用)

#return的作用:结束一个函数的执行

#函数的返回值不为None,有返回值

#return xxx 返回一个值(一个变量)

#return a,b 返回多个值(多个变量),多个值之间用逗号区分

#接收:可以用一个变量接收,以元组的形式返回

# 也可以用多个变量接收,返回几个就用几个变量去接收

#函数要先定义 ,后调用。

deffunc6():'''返回一个值'''

#return 111

#return 'abc'

return ['abc',123]

deffunc7():'''返回多个值'''a= 123b= 'abc'

return a,b,[1,2,3]#ret = func7()#print(ret)#m,n,k = func7()#print(m)#print(n)#print(k)

定义一个列表,返回列表的最后一个值。

deffunc8():

l= [1,2,3,4]return l[-1]ret = func8()print(ret)

====================================================

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

ContractedBlock.gif

ExpandedBlockStart.gif

1 函数即“变量”,“变量”必须先定义后引用。未定义而直接引用函数,就相当于在引用一个不存在的变量名2 #测试一

3 deffoo():4 print('from foo')5 bar()6 foo() #报错

7

8 #测试二

9 defbar():10 print('from bar')11 deffoo():12 print('from foo')13 bar()14 foo() #正常

15

16 #测试三

17 deffoo():18 print('from foo')19 bar()20

21 defbar():22 print('from bar')23 foo() #会报错吗?

24

25

26 #结论:函数的使用,必须遵循原则:先定义,后调用

27 #我们在使用函数时,一定要明确地区分定义阶段和调用阶段

28

29 #定义阶段

30 deffoo():31 print('from foo')32 bar()33 defbar():34 print('from bar')35 #调用阶段

36 foo()

View Code

函数在定义阶段都干了什么:

#只检测语法,不执行代码

也就说,语法错误在函数定义阶段就会检测出来,而代码的逻辑错误只有在执行时才会知道

定义函数的三种形式:

#1、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印#2、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值#3、空函数:设计代码结构

ContractedBlock.gif

ExpandedBlockStart.gif

1 #定义阶段

2 def tell_tag(tag,n): #有参数

3 print(tag*n)4

5 def tell_msg(): #无参数

6 print('hello world')7

8 #调用阶段

9 tell_tag('*',12)10 tell_msg()11 tell_tag('*',12)12

13 '''

14 ************15 hello world16 ************17 '''

18

19 #结论:

20 #1、定义时无参,意味着调用时也无需传入参数

21 #2、定义时有参,意味着调用时则必须传入参数

无参、有参

ContractedBlock.gif

ExpandedBlockStart.gif

1 defauth(user,password):2 '''

3 auth function4 :param user: 用户名5 :param password: 密码6 :return: 认证结果7 '''

8 pass

9

10 defget(filename):11 '''

12 :param filename:13 :return:14 '''

15 pass

16

17 defput(filename):18 '''

19 :param filename:20 :return:21 '''

22 defls(dirname):23 '''

24 :param dirname:25 :return:26 '''

27 pass

28

29 #程序的体系结构立见

空函数

空函数

如果想定义一个什么事也不做的空函数,可以用pass语句:

defnop():pass

pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。

pass还可以用在其他语句里,比如:

if age >= 18:pass

缺少了pass,代码运行就会有语法错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值