一、函数

  1. 什么是函数

函数: 对代码块和功能的封装和定义

定义一个事情或者功能. 等到需要的时候直接去用就好了. 那么这里定义的东西就是一个函数.

语法:

def 函数名(形参):

函数体

函数名(实参)

  1. 函数定义, 函数名, 函数体以及函数的调⽤

函数的调用: 使用函数名可以调用函数, 写法: 函数名(), 这个时候函数的函数体会被执行

  1. 函数的返回值

函数中遇到return, 此函数结束, 不再继续执⾏

1. 函数内部不写return, 默认在最后返回None

2. 函数只写了return  返回None

3. 给函数的调用者一个访问结果  return  值   有一个返回值

4. 函数的返回值可以有多个结果   return 值1, 值2, 值3 ....  有多个返回值

返回值返回给调用方!!!

  1. 函数的参数

关于参数:

1. 形参

写在函数声明的位置的变量叫形参. 形式上的⼀个完整. 表⽰这个函数需要xxx

2. 实参

在函数调⽤的时候给函数传递的值. 叫实参, 实际执⾏的时候给函数传递的信息. 表⽰给函数xxx

3. 传参

给函数传递信息的时候将实际参数交给形式参数的过程被称为传参.

函数的参数

形参: 在函数声明位置的变量

1. 位置参数

2. 默认值参数

3. 混合-顺序: 位置, 默认值 必须先声明位置参数, 才能声明默认值参数.

4. 动态传参, *args, **kwargs   动态参数必须在位置参数后⾯

    1 *args: 动态接收位置参数

2 **kwargs:动态接收关键字参数

顺序: 位置, *args, 默认值, **kwargs

*, ** :

def func(*args, **kwargs): 无敌传参

pass

*, ** : 在形参位置: 聚合

在实参位置: 打散

在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.

在形参的位置上的* 表⽰把接收到的参数组合成⼀个元组

如果是一个字典, 那么也可以打散. 不过需要⽤两个*

实参: 在函数调用的时候给函数传递的具体的值

1. 位置参数

2. 关键字参数

3. 混合(注意: 在使⽤用混合参数的时候, 关键字参数必须在位置参数后面)

顺序: 位置, 关键字

二、命名空间

给存放名字和值的关系的空间起⼀个名字叫: 命名空间. 我们的变量在存储的时候就是存储在这片空间中的.

1. 内置名称空间:python自己, print, input, len

2. 全局名称空间: 你写的代码从上到下

3. 局部名称空间: 函数, 类, 方法, 其他模块, 对象

作用域

全局作用域

内置 + 全局

局部作用域

局部名称空间

从局部找全局可以. 但是从全局找局部是不可以的

通过globals()函数来查看全局作⽤域中的内容, 也可以通过locals()来查看局部(或当前)作用域中的变量和函数信息

三、函数嵌套

每一层都会产生独自的名称空间

只要遇⻅了()就是函数的调⽤. 如果没有()就不是函数的调⽤

四、global和nonlocal

global: 在局部引入全局的内容,  可以创建(升华)一个变量为全局变量

nonlocal :  在局部, 引入上一层名称空间中的变量, 如果没有, 继续上一层.....若没有找到就报错

如果全局变量在局部, 可以用, 但是, 不能改

day09,10 函数的更多相关文章

  1. DAY09、函数

    一.函数的定义:跟变量名的定义大同小异 1.声明函数的关键词:def 2.函数(变量)名:使用函数的依据 3.参数列表:()   参数个数可以为0到n个,但()一定不能丢,完成功能的必要条件 4.函数 ...

  2. day09 10 11 12 三天函数内容

    小括号.中括号名字()函数调用符[] 索引调用符 函数的注释:官方推荐: 查看注释 :funcming.__doc__      funcming.__name__ def func(name, ag ...

  3. 初涉JavaScript模式 (10) : 函数 【进阶用法】

    写在前面 不知不觉写到第10篇了.这篇写起来很忐忑,终于和高级搭上边了(呵呵),这篇我们 主要 说一下 JS 方法的部分高级用法(我知道的),笔者水平有限,难免有错.废话不多少,进入正文. 初始化 我 ...

  4. day 10函数二

    今日内容 '''实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合​*****形参:定义函数,在括号内声明的变量名,用来接受外界传来的值​'''​'''注:形参随着函数的调用 ...

  5. python note 10 函数变量

    1.命名空间 #内置命名空间 —— python解释器 # 就是python解释器一启动就可以使用的名字存储在内置命名空间中 # 内置的名字在启动解释器的时候被加载进内存里#全局命名空间 —— 我们写 ...

  6. Day 10 函数的形参,实参

    今日内容 '''实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合​*****形参:定义函数,在括号内声明的变量名,用来接受外界传来的值​'''​'''注:形参随着函数的调用 ...

  7. day 10 函数名的运用,闭包,迭代器

    函数名的本质 函数名本质上就是函数的内存地址 函数名的五种运用: 1.函数名是一个变量 def func(): print(666) print(func) # 函数的内存地址 <functio ...

  8. day09作业—函数进阶

    # 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func1(*args): sum = 0 for i in args: sum += i print(sum) func1(1 ...

  9. Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器

    今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...

随机推荐

  1. js尾巴

    js中根据id获取标签: /** * 根据id获取标签 * @param {string}id * @returns {object} */ function $(id) { return typeo ...

  2. Tomcat 或JBOSS java.lang.ArrayIndexOutOfBoundsException: 8192原因及其解决方法

    2018-04-02 09:24:55 org.apache.catalina.connector.CoyoteAdapter service 严重: An exception or error oc ...

  3. 针对shiro框架authc拦截器认证成功后跳转到根目录,而非指定路径问题

    一.针对shiro框架authc拦截器认证成功后跳转到根目录,而非指定路径问题 首先,我们先来了解一下authc登录拦截器工作原理 authc拦截器有2个作用: 1>登录认证     请求进来时 ...

  4. 常用PHP方法

    个人常用的一些方法记录/** * 返回错误 * * @param int $err_no * @param string $err_msg * @param array $data * @return ...

  5. 生产环境rails console spring自动启动的问题

    在生产环境执行rails console没反应无法进入控制台,或者执行rails console的时候spring自动启动,导致所有的类名都无法识别,报错:NameError: uninitializ ...

  6. Go 学习之路:异常处理defer,panic,recover

    Go没有像Java那样的异常机制,它不能抛出异常.因为设计者们认为,将异常与控制结构混在一起容易使得代码变得混乱.于是乎引入Exception处理: defer,panic,recover; 简单描述 ...

  7. python学习之路-基本数据类型1 变量的概念、数字、字符串

    1 什么是数据类型? 每种编程语言都有自己的数据类型,用于标识计算机可以认识的数据,Python中主要的数据类型为字符串,整数,浮点数,列表,元祖,字典,集合七种主要的数据类型,其中以列表,字典为最主 ...

  8. dtree加载慢的问题

    前几天测试的时候,感觉dtree还行,也不是很慢.今天把树分支扩大以后就懵逼了,慢的一匹. 仔细看了下,才发现原来画分支的时候每次都会请求那些图,反复请求下加载时候无形拉长了很多.没有办法,就只能在h ...

  9. 20155305 2016-2017-2 《Java程序设计》 实验五 Java网络编程及安全实验报告

    20155305 2016-2017-2 <Java程序设计> 实验五 Java网络编程及安全实验报告 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传 ...

  10. 20155315 2016-2017-2 《Java程序设计》第三周学习总结

    教材学习内容总结 1.构造方法决定类生成对象的方式 用this将已存在的参数的值指定给此参数. 用new建立新的实例. class Clothes { String color; char size; ...