博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9.python(第九天日记)
阅读量:6515 次
发布时间:2019-06-24

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

初识函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print(),len()等。但你也可以自己创建函数,这被叫做用户自定义函数。

1.函数定义

  1>定义,使用函数

    1. def 关键字,定义一个函数。

    2. 函数名与变量命命名规则一样

    3. def与函数名之间有一个空格

    4. 函数名之后+括号和冒号

注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

   结论:函数的使用,必须遵循原则:先定义,后调用。我们在使用函数时,一定要明确地区分定义阶段和调用阶段

调用:就是 函数名() 加上括号。

    5.函数定义阶段:只检测语法,不执行代码

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

  2>函数分类

    1.有参

def tell_tag(tag,n): #有参数    print(tag*n) #调用阶段 tell_tag('*',12) 注释:定义时有参,意味着调用时则必须传入参数

 

    2.无参

def tell_msg(): #无参数    print('hello world') #调用阶段 tell_msg() 注释:定义时无参,意味着调用时也无需传入参数

 

    3.空

def auth(user,password):                                 '''                                                               auth function                                                     :param user: 用户名                                                  :param password: 密码                                               :return: 认证结果                                                     '''                                                               pass                                                                                                                            def get(filename):                                                    '''                                                               :param filename:                                                  :return:                                                          '''                                                               pass                                                                                                                            def put(filename):                                                    '''                                                               :param filename:                                                  :return:                                                          '''                                                           def ls(dirname):                                                      '''                                                               :param dirname:                                                   :return:                                                          '''                                                               pass                                                          #程序的体系结构立见           空函数
View Code

 

  3>调用函数:函数名之后+括号

    1 先找到名字

    2 根据名字调用代码

    3 函数调用的3种形式:

        1 语句形式:foo()

        2 表达式形式:3*len('hello')
        3 当中另外一个函数的参数:range(len('hello'))

2.函数的返回值:

    1.在函数中遇到return终断函数

    2.将值返回给函数的调用者注释:   

  什么时候该有返回值?    

    调用函数,经过一系列的操作,最后要拿到一个明确的结果,则必须要有返回值。通常有参函数需要有返回值,输入参数,经过计算,得到一个最终的结果

  什么时候不需要有返回值?    

    调用函数,仅仅只是执行一系列的操作,最后不需要得到什么结果,则无需有返回值。通常无参函数不需要有返回值

      返回值:

        1.return后面没有返回值  

def my_len():    st = 'abcd'    count = 0    for i in st:        count += 1    returnprint(my_len()) >>>None

        2.return返回值是None

def my_len():    st = 'abcd'    count = 0    for i in st:        count += 1    return Noneprint(my_len()) >>>None

        3.return 1个值,该值是什么,就直接返回给函数的调用者,函数名()

def my_len():    st = 'abcd'    count = 0    for i in st:        count += 1    return 123print(my_len()) >>>123

        4.return 多个值,将多个值放到一个元组里,返回给函数的调用者。

def my_len():    st = 'abcd'    count = 0    for i in st:        count += 1    return 1,2,3print(my_len()) >>>(1,2,3)

        5.return 多个值,用多个值接收。

def my_len():    st = 'abcd'    count = 0    for i in st:        count += 1    return 1,2,3a,b,c = my_len()print(a,b,c) >>>1,2,3

3.函数的传参

注释:形参即变量名,实参即变量值,函数调用时,将值绑定到变量名上,函数调用结束,解除绑定

a = input('请输入: ')def my_len(s):    count = 0    for i in s:        count += 1    return countprint(my_len(a))

  

    1.实参:我们调用函数时传递的这个 a 被称为实际参数,因为这个是实际的要交给函数的内容,简称实参

      1.按照位置传值

def max_min(x,y):    the_max = x if x > y else y    #三元运算(三元:x,y,the_max)    return the_maxma = max_min(10,20)print(ma)

       2.按照关键字传值

def max_min(x, y):    the_max = x if x > y else y    return the_maxma = max_min(y = 10,x = 20)print(ma)

      3.混合传参

def max_min(x, y):    the_max = x if x > y else y    return the_maxma = max_min(10,y = 20)print(ma)

注释:1:位置参数必须在关键字参数的前面

   2:对于一个形参只能赋值一次

 

    2.形参:定义函数时的s,只是一个变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参。

      1.按照位置传值

def max_min(x,y):    the_max = x if x > y else y    #三元运算(三元:x,y,the_max)    return the_maxma = max_min(10,20)print(ma)

 

      2.默认参数     #方法:将变化比较小的值设置成默认参数

def Infor_entry(username, sex='男'):    with open('name_list', encoding='utf-8', mode='a') as f1:        f1.write('{}\t{}\n'.format(username, sex))while True:    username = input('请输入姓名(男生以1开头)').strip()    if '1' in username:        username = username[1:]        Infor_entry(username)    else:        Infor_entry(username, '女')

       3.动态参数(万能参数)

     *args接受的就是实参对应的 所有位置参数,并将其放在元组中。

      形参对应顺序:位置参数  ------>  *args  ------>  默认参数

     **kwargs 动态传参,他将所有的关键字参数(无意义的)放到一个字典中。

      形参角度终顺序:位置参数------>  *args  ------>  默认参数  ------>  **kwargs

def foo(x,y,*args):            print(x,y)            print(args)        foo(1,2,3,4,5)        def foo(x,y,*args):            print(x,y)            print(args)        foo(1,2,*[3,4,5])        def foo(x,y,z):            print(x,y,z)        foo(*[1,2,3])

 

def foo(x,y,**kwargs):            print(x,y)            print(kwargs)        foo(1,y=2,a=1,b=2,c=3)        def foo(x,y,**kwargs):            print(x,y)            print(kwargs)        foo(1,y=2,**{
'a':1,'b':2,'c':3}) def foo(x,y,z): print(x,y,z) foo(**{
'z':1,'x':2,'y':3})

 

def foo(x,y):            print(x,y)        def wrapper(*args,**kwargs):            print('====>')            foo(*args,**kwargs)

   4.*的魔法应用:

   在函数的执行(调用)时:打散。

      *可迭代对象(str,tuple,list,dict(key))每一个元素添加到args元组中。

      **dict 将字典的键值对添加到kwargs字典中.

def func(*args,**kwargs):    args = (1,2,3,4)    # kwargs = {'age': 56, 'name': '老男孩'}    print(*args)    # print(**kwargs) #(age = 56 ,name = 老男孩)dic1 = {
'name1':'alex','age1':46}dic2 = {
'name':'老男孩','age':56}func(*[1,2,3,4],*'asdfsad',**dic1,**dic2)func(**dic2)

 

   函数的定义时: 聚合。

      *args将所有的位置参数聚合到一个元组中。

      **kwargs 将所有的关键字参数聚合到一个字典中。

 
def func(*args,**kwargs):    print(args)    print(kwargs)dic1 = {
'name1':'alex','age1':46}dic2 = {
'name':'老男孩','age':56}func(*[1,2,3,4],*'asdfsad',**dic1,**dic2)
 

 

      

 

  

  

 

  

            

 

转载于:https://www.cnblogs.com/xiaojipaobaba/p/8665182.html

你可能感兴趣的文章
MyBatis原理简介和小试牛刀
查看>>
js部分基础
查看>>
Docker 常用基础命令
查看>>
脏读,幻读,不可重复读解释和例子
查看>>
Day02 数值运算&条件判断
查看>>
Tomcat指定(JDK路径)JAVA_HOME而不用环境变量
查看>>
Bluemix专属版本落地中国 开放物联网和认知计算能力
查看>>
汤姆大叔的6道javascript编程题题解
查看>>
【世界知名量子科学家加盟阿里】施尧耘出任阿里云量子技术首席科学家
查看>>
DataCore对外出售其虚拟化软件产品
查看>>
说说云计算与移动管理
查看>>
T-Mobile美国使用28GHz频段测试5G
查看>>
如何缓解影子云服务安全风险?
查看>>
Bossies 2016:最佳开源大数据工具
查看>>
银行卡信息安全事件频发 互联网站成数据泄露"重灾区"
查看>>
云服务器 ECS 使用OpenAPI管理ECS:使用OpenAPI弹性创建ECS实例
查看>>
象云2.0产品发布暨国产操作系统首次入驻公有云
查看>>
一个完美DCIM应该具备的功能与价值
查看>>
《SEO的艺术(原书第2版)》——1.5 人们如何搜索
查看>>
经验贴 | 电梯监控的布线技巧
查看>>