zoukankan      html  css  js  c++  java
  • python函数


    python

    1.python函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
    函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

    2.定义一个函数

    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
    任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
    函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    函数内容以冒号起始,并且缩进。
    return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    3.语法(函数的调用)

    4.参数

    参数传递

    在 python 中,类型属于对象,变量是没有类型的:

    a=[1,2,3]
     
    a="Runoob"
    
    以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。
    
    在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
    
    
    不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。
    
    可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
    
    python 函数的参数传递:
    
    不可变类型:类似 C++ 的值传递,如 整数、字符串、元组。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a))内部修改 a 的值,则是新生成来一个 a。
    
    可变类型:类似 C++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会受影响
    
    python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
    

    话不多说,直接上案例

    5.函数返回值(return)

    所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果

    6.函数四种类型

    1、无参无返回值

    2、无参有返回值

    3、有参无返回值

    4、有参有返回值

    函数的嵌套调用

    一个函数里面又调用了另外一个函数,这就是所谓的函数嵌套调用 
    如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置
    

    案例

    函数的局部变量与全局变量

    局部变量

    局部变量,就是在函数内部定义的变量
    其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
    因为其作用范围只是在自己的函数内部,所以不同的函数可以定义相同名字的局部变量(打个比方,把你、我是当做成函数,把局部变量理解为每个人手里的手机,你可有个iPhone8,我当然也可以有个iPhone8了, 互不相关)
    局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储
    当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了
    

    全局变量

    在函数外边定义的变量叫做全局变量
    全局变量能够在所有的函数中进行访问
    

    全局变量的修改( global函数)

    参数讲解(二)

    缺省参数

    在形参中默认有值的参数,称之为缺省参数
    注意:带有默认值的参数一定要位于参数列表的最后面
    

    不定长参数

    有时可能需要一个函数能处理比当初声明时更多的参数, 这些参数叫做不定长参数,声明时不会命名
    注意:
    加了星号(*)的变量args会存放所有未命名的变量参数,args为元组
    而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
    

    demo案例

    如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面, 但如果有**kwargs的话,**kwargs必须是最后的
    

    引用

    引用
    在python中,值是靠引用来传递来的。
    我们可以用id()来判断两个变量是否为同一个值的引用。 我们可以将id值理解为那块内存的地址标示
    

    之前为了更好的理解变量,咱们可以把a=100理解为变量a中存放了100,事实上变量a存储的是100的引用(可理解为在内存中的一个编号)
    
    

    引用当实参

    Python中函数参数是引用传递(注意不是值传递)
    对于不可变类型,因变量不能修改,所以运算不会影响到变量自身
    而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量
    

    可变与不可变

    
    所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变
    可变类型有: 列表、字典、集合
    不可变类型有: 数字、字符串、元组
    

    函数注意事项

    自定义函数
    无参数、无返回值
    def 函数名():
        语句
    无参数、有返回值
    def 函数名():
        语句
        return 需要返回的数值
    注意:
    一个函数到底有没有返回值,就看有没有return,因为只有return才可以返回数据
    在开发中往往根据需求来设计函数需不需要返回值
    函数中,可以有多个return语句,但是只要执行到一个return语句,那么就意味着这个函数的调用完成
    有参数、无返回值
    def 函数名(形参列表):
        语句
    注意:
    在调用函数时,如果需要把一些数据一起传递过去,被调用函数就需要用参数来接收
    参数列表中变量的个数根据实际传递的数据的多少来确定
    
    有参数、有返回值
    def 函数名(形参列表):
        语句
        return 需要返回的数值
    函数名不能重复
    

    递归函数

    什么是递归函数

    如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数
    
    

    匿名函数

    
    Lambda函数能接收任何数量的参数但只能返回一个表达式的值
    匿名函数不能直接调用print,因为lambda需要一个表达式。
    

    列表推导式

    所谓的列表推导式,就是指的轻量级循环创建列表
    

    数据类型转换

    set list tuple之间可以互相转换
    使用set,可以快速的完成对list中元素的去重

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
  • 相关阅读:
    PWA渐进式增强WEB应用
    如何去掉wordpress头部<link rel='next' href='*/page/2' />
    wordpress修改邮箱提示There is a pending change of your email to
    使用WP-China-Yes让你的wordpress告别429错误
    Focus
    α_β_γ_δ_ε_ζ_η_θ_ι_κ_λ_μ_ν怎么读
    Ubuntu总结常用命令记录
    声明
    你所不知道的冰冷的经济真相(转自来自天涯大佬)
    杨振宁演讲谈这件事:我很高兴中国政府没有上当
  • 原文地址:https://www.cnblogs.com/DunayueBlog/p/13658056.html
Copyright © 2011-2022 走看看