Python---函数2---王伟
#1.作用域:变量生效的区域
#2.作用域的分类
a.全局作用域(全局变量)
- 全局作用域在程序执行时创建,在程序执行结束时销毁
- 所有函数以外的区域都是全局作用域
- 在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问
-globals()返回当前的全局变量
-在模块层级上,locals()和globals()是同一个字典
- 函数作用域在函数调用时创建,在调用结束时销毁
- 函数每调用一次就会产生一个新的函数作用域
- 在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问
a.首先会在当前作用域中寻找变量,如果有则使用
b.如果没有继续去上一级作用域中寻找,如果有则使用
c.如果依然没有则继续去上一级作用域寻找,以此类推
d.直到找到全局作用域,依然没有找到,则会抛出异常
***引用全局变量时,不需要global声明,使用或者修改这个全局变量的时候,需要global声明
-global:修饰变量后,标识该变量是全局变量,对该变量进行修改就是修改全局变量
-nonlocal:修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)
1.global可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,2.nonlocal只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误
```
#1.命名空间:一个从名称到对象的映射关系
a.命名空间的本质是字典
b.存储变量
a.内置函数的集合(包含print()等内置函数和内置异常等)
b.模块中的全局名称(对象的属性集合也是一种命名空间的形式)
c.函数调用中的局部名称
a.内置名称的命名空间是在 Python 解释器启动时创建的
b.模块的全局命名空间在模块定义被读入时创建;通常,模块命名空间也会持续到解释器退出
c.一个函数的本地命名空间在这个函数被调用时创建,并在函数返回或抛出一个不在函数内部处理的错误时被删除。当然,每次递归调用都会有它自己的本地命名空间
```
#1.返回值:函数执行后返回的结果,通过return来指定函数的返回值
#2.return后面跟什么值,函数就返回什么值,return可以跟任意对象
#3.如果仅仅写了个return或者不写return,则相当于return None
#4.在函数中,return后的代码都不会执行,return一旦执行函数自动结束
result=0
for i in args:
result += i
return result
function(10,20,30)
60
print("python")
def function2():
print("hello world")
return function2
print(function())
python
<function function1.<locals>.function2 at 0x000001F787477318>
```
#1.递归函数:在函数中自己调用了自己
#2.递归函数的两个要件
#a.基线条件
问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了
#b.递归条件
将问题继续分解的条件
def function(a):
if a == 1:
return 1
return n * function(n-1)
print(function(10))
3628800
```
解释型语言应用场景:网页脚本、服务器脚本、辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言
编译器:将其他语言翻译成机器语言的工具
解释器:当编译器以解释方式运行的时候,也称之为解释器
作用:
a.存储变量
b.命名空间可以预防变量和函数的命名冲突,每个命名空间都是封闭的
内建命名空间:记录Python自身提供的函数、模块等被命名的对象
全局命名空间:记录模块的变量、函数、类及其它导入的模块等被命名的对象
局部命名空间:记录函数内部的变量、传入函数的参数、嵌套函数等被命名的对象
Python---函数2---王伟的更多相关文章
- python 函数之day3
一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...
- Python函数作用域的查找顺序
函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...
- Python函数讲解
Python函数
- Python函数信息
Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...
- Python函数参数默认值的陷阱和原理深究"
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- Python开发【第四章】:Python函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...
- Python函数解析
对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...
- Python入门笔记(18):Python函数(1):基础部分
一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...
- Python函数1
Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...
- python函数传参是传值还是传引用?
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
随机推荐
- 【MapReduce】一、MapReduce简介与实例
(一)MapReduce介绍 1.MapReduce简介 MapReduce是Hadoop生态系统的一个重要组成部分,与分布式文件系统HDFS.分布式数据库HBase一起合称为传统Hadoop的三 ...
- Cisco 三层交换机划分VLan与普通路由器连接配置
根据一些中小企业的一些业务需求,设计一套方案: 计划目标:针对不同部门划分不同的VLAN,前期满足能够同时上网的需求,后期需要能够隔离不同部门的资源访问(本次配置操作不涉及). 因之前未接触CISCO ...
- Kali Linux 2019.2安装谷歌输入法
前言 Linux下常用的中文输入法平台有IBus.fcitx和scim.scim现在维护滞后,不推荐使用. IBus ("Intelligent Input Bus") 是一个 输 ...
- 【Python开发】增强的格式化字符串format函数
自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...
- CTR点击率校准
1. 概述 广告CTR预估过程中,正负样本比例差距较大,需要采样,但是采用后模型训练的结果是有偏的. 2. 校准方式 用逻辑回归作为激活函数
- Js 原型,原型链
原型,原型链 原型:在JavaScript中原型是一个prototype对象,用于表示类型之间的关系. 原型链:JavaScript万物都是对象,对象和对象之间也有关系,并不是孤立存在的.对象之间的继 ...
- [转帖]微软 SQL Server 2008/R2 停止支持
微软 SQL Server 2008/R2 停止支持 微软停止支持 SQLSERVER 2008R2 https://t.cj.sina.com.cn/articles/view/3172142827 ...
- 设计模式:状态模式(Status)
在介绍状态模式之前,我们先来看这样一个实例:你公司力排万难终于获得某个酒店的系统开发项目,并且最终落到了你的头上.下图是他们系统的主要工作(够简单). 当你第一眼看到这个系统的时候你就看出来了这是一个 ...
- Luogu P4902 乘积
题目 我们要求的是 \[ \prod\limits_{i=a}^b\prod\limits_{j=1}^i(\frac ij)^{\lfloor\frac ij\rfloor} \] 先把它拆开 \[ ...
- Linux中使用curl命令发送带参数的get请求和post请求
GET 请求 curl命令 + 请求接口的地址 curl http://**.**.***.**/SeedAgile/SeedApi/querySprintByRequirementNo?parame ...