zoukankan      html  css  js  c++  java
  • Python第九节课--初识函数

    初识函数--笔记

    #20200927  函数
    # 函数的概念:将一段程序封装起来,当需要使用时进行调用
    #def 函数名(形参): 注意:1、参数个数随意,2、后面跟冒号1
    # def sumdata(a,b): #这是形式参数,简称形参
    # print(a+b) #函数内部语句,必须缩进
    #sumdata(6,6) #这是实际参数,简称实参
    #这个函数是最基础的,因为没有返回值
    #print(sumdata(6,5)) #这里打印函数的返回值,返回的是none,表示没有返回值。怎样才能有返回值呢?
    # def sumdata(a,b):
    # print(a+b) #因为这个print语句在函数里面,所以执行函数的时候会把它打印出来,但是这个不是返回值
    # return a+b #这个才是返回值。函数的返回值用return表示。一个函数如果没有返回值,或者return后面没有数据,函数的返回值就是None
    # print(sumdata(6,6)) #这里有返回值了 ,返回的12
    #思考图:函数中可以有多个return吗?
    #可以!!!分支语句!!!eg:写一个函数可以返回某数的绝对值
    # def jueduizhi(number):
    # if number>=0:
    # return number
    # else:
    # return -number
    # print(jueduizhi(-5)) #有了返回值得打印出来才能看到
    #在同一个分支里可以有多个return吗? 可以!!!elif!!! 但是只有第一个语句可以执行,后面的叫不可达语句
    # def sumdate(a,b):
    # return a+b
    # return a*b #可以有多个return,但是不会被执行
    # print('lalal') #不只是return不会被执行,所有语句都不会被执行
    # print(sumdate(1,2))

    #思考:return可以有多个值吗??可以的!多个值会已元组房形式出现
    # def sumdate(a,b):
    # return a+b,a*b,a**6
    #这里如果是return [a+b,a*b,a**6] ,返回的就是一个列表,为什么?因为这个对于return来说就只是一个值,一个列表也只是一个值
    #这里如果是return (a+b,a*b,a**6),可以理解为也是一个值,这个值是元组,有多个元素的元组
    # q=sumdate(2,3) #可以给函数自定义命名
    # print(q) #打印的时候打印名字就行了
    # print(sumdate(2,3)) #查看类型可以用type()函数print(type(sumdate(2,3)))

    #参数的默认值/缺省值
    # def sumdate(a=6,b=9):
    # return a+b
    # print(sumdate()) #这里因为在定义函数的时候就设置了缺省值,所以打印的时候没有传实参,也可以有结果15,
    # print(sumdate(2,6)) #也可以直接传参,这样就用的是当前传的参数
    # print(sumdate(a=2,b=6))
    # print(sumdate(2,b=6))
    #print(sumdate(a=2,6)) #以上写法都者却,只有前全后不全写会报错
    #对于普通的参数而言(当没有缺省值时),形参和实参的数量得一致,不能多也不能少。当有缺省值时,可以少传,但是不能多传

    #可变长度参数*args
    # def fu(a,*args): #定义一个函数,两个参数,第二个参数是可变长度参数
    # #return a,args #这样子会多一层元组
    # return a,*args #这样子不会多一层元组,都是平级的
    # #print(fu(12)) #当只传一个值时,打印结果是:(12, ()),后面多了一个元组
    # print(fu(12,11,10)) #当传值大于等于2个时,会把第一个之后的只都放到元组里面去
    #按住Ctrl键点击函数名可以查看内置函数缺省值,比如:def print(self, *args, sep=' ', end=' ', file=None):
    # print(10,20,30,sep='a') #sep缺省值是空格,传参a,结果是10a20a30
    # print(10,20,30,end='eee') #10 20 30eee5 6 7
    # print(5,6,7)

    #关键字参数 **kwargs
    # def fun2(a,*args,**kwargs): #书写顺序,必须是普通参数>可变长度参数>关键字参数
    # return a,kwargs
    # print(fun2(100,aa=99123456.
    # ,bb=98,cc=97))





    # --心田老师录播课笔记:函数:
    # 本节课大纲:
    '''
    # 1--函数的定义与调用 ---基本操作
    # 2--函数的参数与返回值
    # 3--内置函数
    规则:函数一定要先定义后调用,否则会报错
    '''
    # 变量:给一个对象取一个名字,方便后续的调用与维护
    # 需求:在实际工作中,一些步骤重复使用,就可以做一个函数来替代这些步骤,提高工作效率,从而引入函数的概念, 函数概念:
    #1-函数的定义与调用-定义:定义函数不会执行函数里面的代码
    # def test():#最简单的定义函数,test函数名课自己定义
    # # 多行代码往后缩进怎么破?TAB键,往前缩进,用shift+tab
    # print('书山')
    # # print('书山有路勤为径') #只打印了书山有路勤为径,函数里的书山未打印出来,说明定义函数不会执行函数里面的代码
    #2-函数调用--要调用才会执行函数里面的代码
    # test() #现在才执行了代码,打印得:书山
    #3-函数的参数:
    '''
    1- 形参--一般是函数定义时候的参数 比如a,b
    1- 必填形参,就是一个变量名函数调用的时候一定得传递,个数一致
    2- 缺省参数,可传可不传,传的话就用实际传的值,不传就用缺省值,这个参数是在定义函数的时候加的,如:def first(a=3,b=3),后续调用的时候如果有重新给ab复制就用最新定义的,没有复制就用缺省值
    用途:考虑到用户使用习惯,减少参数的输入
    3- 可变数量参数,叫不定长参数 test(a,*a)
    4- 关键字参数,也是可变数量参数,在定义函数的时候,是两个*键,,写作: **变量名 # 会把**变量名封装成一个字典;调用该函数的时候,一定是变量=值
    2- 实参

    '''
    # def test():
    # print(3+1)
    # return test #注释掉下面哪行,打印返回值,没有返回值,这个函数是低级函数
    # test() #打印得4,但是这种函数很不好,不能自己决定参数改变值,只能有一个结果,换个说法,没有返回值
    # 1- 必填参数
    # def test(a,b):
    # print (a+b)
    # return test
    # # test() #调用的时候没有传参数,报错了TypeError: test() missing 2 required positional arguments: 'a' and 'b',这是必填形参
    # test(3,3) #顺序传递 #调用的时候直接在函数空号内定义实参,可直接得到函数的返回值
    # test(a=9,b=2) #指定参数传递
    # test(10,b=20) #指定
    ##错误示范:test(a=10,20) 如果函数调用的时候出现了变量=值的写法,后续的变量也必须是变量=值的写法.保持队形
    # def test(a,b,c):
    # print (a+b-c)
    # return test
    # test(a=10,b=20,c=5) #参数增多,没有保持队形,也会报错:SyntaxError: positional argument follows keyword argument
    # 2- 缺省参数
    # def first(a=3,b=3):
    # print(a+b)
    # return
    # first() #不传值就用缺省值:打印得6
    # first(6,6) #传值就用实际传的值:打印得12
    # 3- 可变数量参数
    # * 自己封装成元组
    # def test(a,*args): #a是必填参数,后面的args是可变数量参数,可写可不写
    # print (a,args)
    # test(1) #打印得:1 () ,
    # test(1,2,3,'是') #打印得:1 (2, 3, '是') ,后面的参数都装在元组里面的,长度没有限制
    # test(1,[10,20,30]) #打印得:1 ([10, 20, 30],),如果传的是列表,也是只有两个元素,列表和其他一起装在元组里面
    # test(1,*[10,20,30])#打印得:1 (10, 20, 30),,拆包,把列表拆掉
    # test(1,(10,20,30)) #打印得:1 ((10, 20, 30),)试试元组能不能被拆掉
    # test(1,*(10,20,30)) #打印得:1 (10, 20, 30),,,元组也能被拆掉
    # 4- 关键字参数
    # 在定义函数的时候,是两个*键,,写作: **变量名 # 会把**变量名封装成一个字典,同理.**也可以拆字典
    # 在调用该函数的时候,一定是变量=值
    # def test(a,**kwargs):
    # print(a,kwargs)
    # test(1,name="Tom",age=23) #打印得:1 {'name': 'Tom'} 因为调用的时候必须是:变量=值,所以调用的时候写name变量="Tom"这个值,才会封装成字典的形式
    # **如何用**拆字典?
    # test1={"name":"Tom","age":"23"}
    # print(test1)
    # test(**testq)这串代码有问题,一哈哈再找原因
    # 找到原因的,需要字典1(**字典2),会把字典2拆包成字典一的内容,类型是<class 'NoneType'>
    # def test1(**kea): #kea系统自动装包成字典
    # print(kea)
    # #调用
    # test1() #打印得:{},是一个空字典
    # test1(a=1,b=2,c=3) #使用关键字的key来进行赋值,打印得:{'a': 1, 'b': 2, 'c': 3}
    # test1(a=1) #打印得:{'a': 1}
    # test2={'age':23,'name':'tom'} #再定义一个字典,然后用字典{**{字典}}就可以吧里面那个字典进行拆包了
    # print(type(test2)) #类型是:<class 'dict'>
    # test1(**test2) #打印得:{'age': 23, 'name': 'tom'}将字典拆包成关键字形式
    # print(type(test1(**test2))) #类型是:<class 'N

    # 5- 返回值:函数执行完成后返回一个值,就叫返回值
    '''
    情形1:
    a同事:编写一个求和函数
    b同事:需要调用a同事的函数的求和结果,再加上5
    知识点:
    1- 函数的return是一个函数的结束,
    2- 如果return后面跟一个值,接受到的值就是该类型
    3- 如果return后面跟多个值,接受到的值一定是元组
    4- 如果一个函数的返回值是None,说明该函数没有返回值
    '''
    # a同事:编写一个求和函数
    # def get_sum(a,b):
    # # print(a+b) #这一行要注释掉,因为不想这个值传到控制台
    # return (a+b) #用return把这个值返回来,返给谁,看谁要接这个值
    # # b同事:需要调用a同事的函数做二次计算
    # get_sum(1,2) #如果没有return,,打印得3,这个3在控制台,无法取出来做计算.但是b同事不想要它打印出来,b同事只想拿到这个值号做运算,所以需要把这个值return出来
    #上面的函数调用需要注意一点,注释掉print(),只有return的时候这样调用函数没有值的,因为值已经被返回出去了
    # res=get_sum(1,2)
    # print(res+5) #res打印得3,再+5打印得8
    # 知识点举例:
    # def get_sum(a,b):
    # return(a+b)
    # print(type(get_sum(1,2))) #如果return后面跟一个值,接受到的值就是该类型,得3,<class 'int'>
    # def get_sum(a,b):
    # return(a+b),10,'lalala'
    # print(get_sum(1,2)) #如果return后面跟多个值,接受到的值一定是元组,打印得:(3, 10, 'lalala'),<class 'tuple'>
    # def get_sum(a,b):
    # pass
    # print(get_sum(1,3)) #如果一个函数的返回值是None,说明该函数没有返回值
    # def get_sum(a,b): #函数比较复杂的时候,在该函数下换行,打出三引号'''''',然后再中间敲回车就可以查看反函数的注释了,实例:
    # '''
    #
    # :param a:
    # :param b:
    # :return:
    # '''

    #查看函数的说明.print(函数名._doc_),示例:
    # def get_sum(a,b):
    # return (a+b)
    # print(get_sum(1,2))
    # print(get_sum.) #这里不对,

    # 什么叫内置函数
    # Python中有很多内置函数,不需要调用直接可以用,如:print,len,max
    # 类型相关的函数:str,int,list,tuple 这些是强制转换的时候需要用到
  • 相关阅读:
    lambda表达式
    You can't specify target table 't_mail_marketing' for update in FROM clause
    从对象list中获取对象属性list
    枚举缓存
    Solr语法
    通过Telnet查询注册服务
    日志查询
    Maven 屏蔽静态文件
    抽奖
    随机码生成方法
  • 原文地址:https://www.cnblogs.com/66-liu/p/13822079.html
Copyright © 2011-2022 走看看