ython 函数

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

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

定义函数

def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]

函数文档类似于注释,用于理解函数的功能。可以使用functionname.__doc__打印出函数文档内容。

调用函数

#!/usr/bin/python
# -*- coding: UTF-8 -*- # 定义函数
def printme( str ):
"打印任何传入的字符串"
print str;
return; # 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");

注意:在Python中不允许前向引用,即在函数定义之前,不允许调用该函数。即在调用函数前,必须先定义该函数。

函数参数

首先理解下形参和实参的概念:

函数定义过程中的参数叫形参,调用函数时传入的参数叫实参,它是具体的参数值。

函数定义参数有四种类型:

1、位置参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

2、默认参数

参数定义过程中为形参赋初值,调用函数时,若未给参数赋值,则使用默认值代替。

3、关键字参数

通过参数名来指定需要赋值的参数,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def printme( str ):
"打印任何传入的字符串"
print str;
return; #调用printme函数
printme( str = "My string");

4、可变参数(收集参数)

def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]

加了星号(*)的变量名会存放所有未命名的变量参数。其实python是把收集参数当成一个元组处理的。

若收集参数后需要加其他定制参数,为其赋值时就需要使用关键字参数赋值。尽量在定义函数时为这些定制参数设置默认值,防止出错。

函数返回值

def back():

return [1,'s',2]

def back():

return 1,2,'s'

用逗号隔开的多个数据,其实是以返回了一个元组

函数作用域

全局变量 VS 局部变量

我们通常把定义在函数外的变量成为全局变量,定义在函数内的变量称为局部变量,顾名思义,全局变量的作用域是整个代码段,局部变量的作用域就只是在它所属的代码段,变量只在它的作用域里有效。

注意:在函数内可以访问全局变量,但不能修改。如果强行修改全局变量,python会自动在函数内创建一个和全局变量同名的局部变量,被修改的是这个局部变量,全局变量不会改变。

global关键字

从上面课的代码中可以发现,如果在函数体内声明的变量名和已经有的全局变量名重复,那么局部变量就会把全局变量覆盖掉。如果想要在函数体内使用全局变量,使用前需要先用global语句来声明下用到的这个变量是全局变量。

内嵌函数

内部函数整个作用域都在外部函数之内

  def fun1():
    print('fun1()正在被调用……')
    def fun2():
      print('fun2()正在被调用……')
    fun2()
fun1()

fun1()正在被调用……
fun2()正在被调用……

fun2()

报错,提示fun2没有被定义

内部函数只能在外部函数体之内调用,如果在外部函数外调用会报错。

闭包(closure)

如果在一个内部函数里,对在外部作用域的变量进行引用,那么这个内部函数就是一个闭包

  def funx(x):
    def funy(y):
      return x*y
    return funy

funx(3)返回的是函数类型

print(funx(3)(4))   打印出12

  def fun1():
    x=5
    def fun2():
      x*=x
      return x
    return fun2()
fun1()报错,因为在fun2里,调用并更改了外部函数的变量x

  def fun1():
    x=5
    def fun2():
      nonlocal x
      x*=x
      return x
    return fun2()
print(fun1()) 可以正常执行

lambda表达式(匿名函数)

作用主要是:简化代码,还不用考虑函数名问题。

Python3基础——函数的更多相关文章

  1. Python3基础 函数 关键字参数 的示例

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  2. Python3基础 函数名.__doc__显示一个函数的单行与多行函数文档

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  3. Python3基础-函数实例学习

    内置函数 绝对值函数 x = abs(100) y = abs(-20) print('x=100的绝对值为:{}'.format(x)) print('y=-20的绝对值为:{}'.format(y ...

  4. Python3基础 函数 递归 阶乘与斐波那契数列

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  5. Python3基础 函数 函数名赋值操作

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  6. Python3基础 函数 参数为list 使用+=会影响到外部的实参

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  7. Python3基础 函数 参数 多个参数都有缺省值,需要指定参数进行赋值

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  8. Python3基础 函数 收集参数+普通参数 的示例

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  9. Python3基础 函数 默认值参数示例

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

随机推荐

  1. laravel发送邮件配置

    1.设置发送方,即邮件服务器,可以使用163邮箱,设置smtp,开启后获取授权码 2.在env文件配置 MAIL_DRIVER=smtpMAIL_HOST=smtp.163.com  //邮箱服务器M ...

  2. java初探(1)之静态页面化——客户端缓存

    利用服务端缓存技术,将页面和对象缓存在redis中,可以减少时间浪费,内存开销.但在每次请求的过程中,仍然会有大量静态资源的请求和返回. 使用静态页面技术,页面不必要使用页面交互技术,比如thymel ...

  3. C++中的输入输出

    update&fixed: 经过实测,io解绑在各大oj以及本地评测软件上都劣于scanf 所以在大数据的情况下还是推荐尽量使用scanf! ! ! ! 众所周知,C++自带了各种输入方式 比 ...

  4. 给MySQL中数据表添加字段

    添加一个char字段: mysql> alter table stock add src char(20); Query OK, 3766 rows affected (0.65 sec) Re ...

  5. Git——从安装到连接GitHub

    安装Git Windows平台上很轻松的,直接点击地址Git下载进行下载,之后基本就是下一步,安装成功. 在所需要操作的项目下右键,点击"Git Bash Here"弹出Git命令 ...

  6. SpringCloud系列之Nacos+Dubbo+Seata应用篇

    目录 前言 项目版本 项目说明 Nacos服务 Seata服务 订单模块 支付模块 参考资料 系列文章 前言 本文接上篇文章<SpringCloud系列之Nacos+Dubbo应用篇>继续 ...

  7. vue | vue实现列表同时展开与单独展开

    需求:每个li标签在点击的时候,都同时展开. 但是碰见几个问题: 1.如果点第一个li 所有li都会展开: 2.点击第一个li,第一个li展开,点击第二个li,第一个li闭合,第二个li展开 这两种情 ...

  8. Burger King使用RayOnSpark进行基于实时情景特征的快餐食品推荐

    作者:Luyang Wang, Kai Huang, Jiao Wang, Shengsheng Huang, Jason Dai 基于深度学习的推荐模型已广泛应用于各种电商平台中,为用户提供推荐.目 ...

  9. MybatisPlus根据模板生成器代码

    导读 网上的代码生成器,都不是自己想要的,今天下午研究了下,可以使用mybatisplus自定义模板,根据模板生成相应的代码,可以根据需求,改造相应模板即可.代码已上传github/百度云. 项目结构 ...

  10. Python记录日志模块推荐-loguru!

      作者:小张学Python 本文链接: https://mp.weixin.qq.com/s/dkNkEohPl6H2VopUrpxxZg 转载请注明来源!! 前言 在做项目的时候一直在用Pytho ...