博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之定义函数
阅读量:6587 次
发布时间:2019-06-24

本文共 5261 字,大约阅读时间需要 17 分钟。

Python之定义函数

一、函数的写法:

#语法def 函数名(参数1,参数2,参数3,...):    '''注释'''    函数体    return 返回的值#函数名要能反映其意义
1 def auth(user:str,password:str)->int: 2     ''' 3     auth function 4     :param user: 用户名 5     :param password: 密码 6     :return: 认证结果 7     ''' 8     if user == 'george' and password == '123': 9         return 110 # print(auth.__annotations__) #{'user': 
, 'password':
, 'return':
}11 12 user=input('用户名>>: ').strip()13 pwd=input('密码>>: ').strip()14 res=auth(user,pwd)15 print(res)
例子
1 def mylen(): 2     s = 'Hello George' 3     length = 0 4     for i in s: 5         length += 1 6     return length 7 leng = mylen() 8 print(leng) 9 #return 返回的length的值给函数mylen10 #函数mylen()在将值付给leng变量11 #在打印leng就是结果了

 

二、函数的返回值:

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

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

def func():    a=111    b=[1,2,3]    return bret = func()print(ret)

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

def func():    a=111    b=[1,2,3]    return a,bret = func()print(type(ret))print(ret)

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

def func1():    a=111    b=[1,2,3]ret = func1()print(ret)

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

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

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

def func3():    a = 111    b = [1,2,3]    return Noneret = func3()print(ret)

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

def func4():    print(1111)    return    print(2222)func4()
def func5():    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 返回多个值(多个变量),多个值之间用逗号区分
      #接收:可以用一个变量接收,以元组的形式返回
      # 也可以用多个变量接收,返回几个就用几个变量去接收

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

def func6():    '''返回一个值'''    #return 111    #return 'abc'    return ['abc',123]
def func7():    '''返回多个值'''    a = 123    b = 'abc'    return a,b,[1,2,3]# ret = func7()# print(ret)# m,n,k = func7()# print(m)# print(n)# print(k)

 

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

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

 

 

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

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

1 函数即“变量”,“变量”必须先定义后引用。未定义而直接引用函数,就相当于在引用一个不存在的变量名 2 #测试一 3 def foo(): 4     print('from foo') 5     bar() 6 foo() #报错 7  8 #测试二 9 def bar():10     print('from bar')11 def foo():12     print('from foo')13     bar()14 foo() #正常15 16 #测试三17 def foo():18     print('from foo')19     bar()20     21 def bar():22     print('from bar')23 foo() #会报错吗?24 25 26 #结论:函数的使用,必须遵循原则:先定义,后调用27 #我们在使用函数时,一定要明确地区分定义阶段和调用阶段28 29 #定义阶段30 def foo():31     print('from foo')32     bar()33 def bar():34     print('from bar')35 #调用阶段36 foo()
View Code

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

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

定义函数的三种形式:

#1、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印#2、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值#3、空函数:设计代码结构
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、定义时有参,意味着调用时则必须传入参数
无参、有参
1 def auth(user,password):                              2     '''                                                            3     auth function                                                  4     :param user: 用户名                                               5     :param password: 密码                                            6     :return: 认证结果                                                  7     '''                                                            8     pass                                                           9                                                                   10 def get(filename):                                                11     '''                                                           12     :param filename:                                              13     :return:                                                      14     '''                                                           15     pass                                                          16                                                                   17 def put(filename):                                                18     '''                                                           19     :param filename:                                              20     :return:                                                      21     '''                                                           22 def ls(dirname):                                                  23     '''                                                           24     :param dirname:                                               25     :return:                                                      26     '''                                                           27     pass                                                          28 29 #程序的体系结构立见
空函数

 

空函数

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

def nop():    pass

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

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

if age >= 18:    pass

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

 

转载于:https://www.cnblogs.com/george92/p/8508460.html

你可能感兴趣的文章
Docker 命令收集
查看>>
iOS App间相互跳转漫谈 part2
查看>>
什么是企业内训
查看>>
深度解析Istio系列之安全模块篇
查看>>
面向对象
查看>>
HDU 1058 Humble Numbers
查看>>
wps10.1中将txt转为excel
查看>>
[BZOJ3312][USACO]不找零(状压DP)
查看>>
gtp转换mbr
查看>>
poj1985 求树的直径
查看>>
适配器模式(数据库方面)支持不同的数据库连接
查看>>
CF456B Fedya and Maths 找规律
查看>>
转载:Beginning WF 4.0翻译——第三章(流程图工作流)
查看>>
芯片测试
查看>>
在源代码中插入防止盗版代码片段的方式
查看>>
ffserver联合ffmpeg建立媒体服务器
查看>>
微软URLRewriter.dll的url重写的简单使用(实现伪静态)
查看>>
leetcode -- Combination Sum II
查看>>
Navicat for MySQL 使用SSH方式链接远程数据库(二)
查看>>
poj 1274The Perfect Stall
查看>>