当前位置: 首页 > 编程日记 > 正文

Python学习之路基础篇--10Python基础,函数进阶

1 命名空间

对于Python 来说命名空间一共有三种

1 内置命名空间 —— Python 解释器

就是Python 解释器一启动就可以使用的名字,储存在内置命名空间中。内置的名字在启动解释器的时候被加载进内存里

2 全局命名空间 —— 我们所命名的,但不是函数中的代码

是在程序从上到下被执行的过程中依次加载进内存中的,放置了我们所设置的所有变量名和函数名

3 局部命名空间 —— 函数

就是函数内部定义的名字,当调用函数时,才会产生这个名称空间,随着函数执行的结束,这个命名空间又消失

PS:

1 在局部中可以使用全局、内置命名空间中的名字;在全局中可以使用内置命名空间的名字,但不能使用局部中定义的名字;在内置中不能使用局部和全局的名字

2 正常情况下直接使用内置的名字,当在全局定义了和内置名字空间中同名的名字时,会使用全局的名字;自己有名字就用自己的,没有就一级级身上找,如果内置中还没有,就会报错;多个函数拥有多个独立的局部名字空间,不互相共享

2 函数名

def func():pass

其中func 是函数的内存地址,函数名加(),是函数的调用,可以类比为:函数的内存地址() = 函数的调用

函数名就是内存地址;函数名可以赋值;函数名可以作为容器类型(元组、列表和字典)的元素;函数名可以作为函数的返回值;函数名可以作为参数

3 函数的作用域

函数的作用域可以分为两种

全局作用域 —— 作用在全局 —— 内置和全局名字空间中的名字都属于全局作用域 —— globals()

局部作用域 —— 作用在局部 —— 函数(局部名字空间中的名字属于局部作用域)—— locals()

对于不可变的数据类型来说,局部可以查看全局作用域中的变量,但是不能直接修改,如果想修改,需要在程序的一开始添加 global 声名,如果在一个局部(函数)内声名一个global 变量,那么这个变量在局部的所有操作将对全局的变量有效

a = 1
def func():global aa += 1print(a)
func()

对于 globals() 和 loclas() 方法

a = 1
b = 2
def func():x = 'aaa'y = 'bbb'print(locals())    #1 打印当前print(globals())    #2 打印全局
func()
print(globals())    #3 打印全局
print(locals())    #4 打印当前

两者打印的是,以字典的形式打印出命名。2、3、4 打印的内容一致,1 打印的是函数内命名的情况

4 函数的嵌套

定义:就是内部函数可以使用外部函数的变量

a = 1
def func1():a = 2def func2():nonlocal a #声明了一个上面第一层局部变量a += 1  # 对不可变数据类型进行了修改  print(a)func2()print(a)
func1()
print(a)

nocolal 只能用于局部变量,找上层中离当前函数最近一层的局部变量;声明 noncolal 的内部函数的变量修改会影响到离当前函数最近一层的局部变量;对全局无效,对局部也只是最近的一层有影响。

5 闭包

闭包就是内部函数调用外部函数的变量

def outer():a = 1def innner():print(a)return inner
inn = outer()
inn()

目的是保护函数内定义的值,并且节省内存空间,不用每次都定义一个a,直接用即可~

来个三元运算

# 取两个数的最大值
def func(a,b):return a if a > b else b
print(func(3, 5))

6 小作业

 # 1 写函数,接收 n 个数字,求这些参数数字的和def sun_func(*args):total = 0for i in args:total += ireturn total
# 2 读代码,回答:代码中打印出来的值 a、b 和 c 分别是什么?为什么?
a = 10
b = 20
def test5(a, b):print(a, b)
c = test5(b, a)
print(c)
# 得出的结果为:
# 20 10 
# None 
# 3 写函数,检查获取传入列表或元组的对象的所有奇数位索引对应的元素,并将其作为新的列表返回给调用者
def func(lis):return lis[1::2]
print(func([1,2,3,4,5,6,]))
# 4 写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5
def func(x):return len(x) > 5
print(func('dfs'))
print(func([1,2,3,4,5,6,]))
print(func((1,2,3,4,5,)))
# 5 写函数,检查用户传入列表的长度是否大于2,如果大于,那么仅保留前两个长度的内容,并将新内容返回给调用者
def func(lis):return lis[:2] # 如果列表长度不够的话,是不会报错的
# 6 写函数,计算传入字符串中,数字、字母、空格以及其它 的个数 ,并返回结果
def func(s):dic = {'n_digist':0,'n_alphabet':0,'n_blank':0,'n_other':0}for i  in s:if i.isdigit():dic['n_digist'] += 1elif i.isalpha():dic['n_alphabet'] += 1elif i.isspace():dic['n_blank'] += 1else:dic['n_other'] += 1return dic
print(func('skjdfhwhihsdfjkh389fhsfhksf  [fahh=-=-'))

转载于:https://www.cnblogs.com/YS-0717/p/9431269.html

相关文章:

C语言中整型浮点型在计算机中的存储

第一次写博客,遣词造句有点菜,算是一次简单梳理,慢慢学习人家的博客风格,随着学习的深入再做修改。 本次学习的是C语言在VS下的编译调试,对于初学者两说,首先说一下如何监控变量,以及监控变量在…

判断交换机性能好坏的九个因素

【文章摘要】把握千兆交换机的主要性能指标是关键,而判断交换机性能的好坏,需要从以下几方面的因素出发... 把握千兆交换机的主要性能指标是关键,而判断交换机性能的好坏,需要从以下几方面的因素出发:   转发技术  …

xgboost回归预测模型_偏最小二乘回归分析法 从预测角度对所建立的回归模型进行比较...

在实际问题中,经常遇到需要研究两组多重相关变量间的相互依赖关系,并研究用一组变量(常称为自变量或预测变量)去预测另一组变量(常称为因变量或响应变量), 除了最小二乘准则下的经典多元线性回归分析(MLR),提取自变量组主成分的主…

win7的IE缓存,临时文件,cookies和历史记录

2019独角兽企业重金招聘Python工程师标准>>> vista、win7的缓存以及临时文件、Cookies和历史记录都在以下几个地方: 缓存: %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files Temp: %userprofile%\AppData\Local\Temp Cookies: %…

Sql Server函数全解(四)日期和时间函数

阅读目录 1.获取系统当前日期的函数getDate();2.返回UTC日期的函数UTCDATE()3.获取天数的函数DAY(d)4.获取月份的函数MONTH(d)5.获取年份的函数YEAR(d)6.获取日期中指定部分字符串值的函数DATENAME(dp,d)7.获取日期中指定部分的整数值的函数DATEPART(dp,d)8.计算日期和时间的函…

关于python的比赛_【蓝桥杯】——python集团的比赛技巧,Python,组

【蓝桥杯】—— Python组比赛技巧蓝桥杯是大学生IT学科赛事,由工业和信息化部人才交流中心主办,所以对于大学生还说还是非常值得去参加的,2020年第十一届蓝桥杯新增了大学Python组,不分组别,第一届没有历届的真题&…

杭电 HOJ 1312 Red and Black 解题报告

搜索&#xff0c;bfs。依旧用队列做。边界处懒得处理&#xff0c;全部初始化为-1。当然&#xff0c;0也可以。AC代码如下&#xff1a; #include<iostream> #include<deque> using namespace std;struct Point {int x,y; } x,y;int main() {char str[22];int i,j,n,…

pfile和spfile的区别

pfile和spfile的区别 pfile 默认的名称为“init例程名.ora”文件路径&#xff1a;/app/oracle/product/10.2.0/dbs&#xff0c;这是一个文本文件&#xff0c;可以用任何文本编辑工具打开。spfile 默认的名称为“spfile例程名.ora”文件路径&#xff1a;/app/oracle/product/10…

json操作2

import jsonfopen(a.txt,w,encodingutf-8)goods{ 宝马:111111, 奔驰:222222}resjson.dumps(goods,ensure_asciiFalse)#把字典转成jsonf.write(res) json.dump(goods,f,ensure_asciiFalse)#把字典转成json,json会帮你write一次 ----颜色不一样的代码一致运行结果&#xff…

缓冲区和数组的输入输出问题

最近编写程序的时候一直被数据的输入输出所困扰&#xff0c;由此写篇博文总结一下最近遇到的问题和解决方法&#xff0c;错误之处望指正。 1.数组使用的一些语法注意事项 &#xff08;1&#xff09;数组的定义 一维数组&#xff1a;类型名 数组名 [常量表达式] 常量表达式中可…

目前python主要应用领域零售_python3读取HDA零售企业数据(一)

#-*- coding:utf-8 -*-# 下载河南FDA各药品经营企业目录import urllib.requestimport urllib.parseimport reimport osimport http.cookiejarheader {Connection: Keep-Alive,Accept: application/x-ms-application, image/jpeg, application/xamlxml, image/gif, image/pjpeg…

调试webservice遇到“测试窗体只能用于使用基元类型作为参数的方法”的解决办法...

之前一直写webservice 没有遇见这种情况&#xff0c;因为一般返回的参数整形 字符串 之类的 都是基本类型&#xff0c;最多也就是把xml序列化为一个字符串返回&#xff0c;这次遇到了返回一个引用类型的&#xff0c;不能直接调试了。所以&#xff0c;现在只能写一个程序把webse…

EJB3.1 JBoss7.1 Eclipse3.7

为什么80%的码农都做不了架构师&#xff1f;>>> EJB3.1 JBoss7.1 Eclipse3.7 ------Hello World 一、环境配置&#xff1a; JDK&#xff1a;正常配置 Eclipse&#xff1a;正常下载&#xff0c;解压&#xff08;V3.7&#xff09; JBoss&#xff1a;正常下载&#xf…

NOIP2012-摆花

放题目不解释~~~~ 【试题描述】 小明的花店新开张&#xff0c;为了吸引顾客&#xff0c;他想在花店的门口摆上一排花&#xff0c;共m盆。通过调查顾客的喜好&#xff0c;小明列出了顾客最喜欢的n种花&#xff0c;从1到n标号。为了在门口展出更多种花&#xff0c;规定第i种花不能…

github提交代码却没有显示绿格子

在github上提交代码之后&#xff0c;进入github上面查看自己的提交&#xff0c;可以看看刚刚的提交内容&#xff0c;但是却一直没有显示绿格子&#xff0c;一个原因是本地git的配置邮箱和github上面的邮箱不一致。 解决办法是&#xff0c;打开本地的git bash&#xff0c;然后直…

spark+openfire即时通讯工具二次开发参考文档

摘自: http://gmd20.blog.163.com/blog/static/168439232010527525542/ 其中Spark是开源的基于XMPP协议的即时通讯工具&#xff0c;公司最近也换到用这个了&#xff0c;说是在服务器&#xff08;openfire&#xff09;上可以备份消息&#xff0c;然后可以看员工的聊天记录 smac…

python selenium 等待页面加载完毕_Selenium_等待页面加载完毕

隐式等待WebDriver driver newFirefoxDriver();driver.get("www.baidu.com");driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);WebElement element driver.findElement(By.cssSelector(".abc"));((JavascriptExecutor)driver).executeS…

TechEd 2012奥兰多!

亚特兰大TechEd 2011如同昨天的事情&#xff0c;今天又无比期待奥兰多的TechEd 2012&#xff01;如果可能的话&#xff0c;我将继续为大家分享关于奥兰多TechEd 2012 的现场见闻&#xff01; 转载于:https://blog.51cto.com/suhua/845796

【常见CPU架构对比】维基百科

Comparison of instruction set architectures https://en.wikipedia.org/wiki/Comparison_of_instruction_set_architectures转载于:https://www.cnblogs.com/timeObjserver/p/9441242.html

Python基础学习1(Python的Windows和Linux的安装及简单学习)

一Python的安装 1.Windows下安装Python &#xff08;1&#xff09;windows 命令行的几个常见的命令 dir&#xff1a;查看当前目录下的所有文件&#xff0c;以及目录 cd NAME&#xff1a;进入到NAME目录下&#xff08;tab键自动补全&#xff09; D: 切换到D盘 type NUL…

Python Tutorial(十):浏览标准库(一)

10.1 操作系统接口 os模块提供很多函数用于和操作系统的交互&#xff1a; 确定使用import os风格而不是from os import *。这将避免os.open()被内建的open()函数遮住&#xff0c;它的操作截然不同。 内建的函数dir()和help()作为交互助手对于大的模块像os是非常有用的&#xff…

学业水平考试b能上985吗_河南单招哪些学院好考?哪些专业能录取?

高职单招的录取规则是什么?在符合报考条件的前提下&#xff0c;考试是由两部分组成&#xff1a;文化素质评价职业适应性测试、职业技能测试。文化素质评价大多院校采用学业水平考试等级成绩折合一定的分值计入。有些学校采用现场考试语数外三门&#xff0c;以实际成绩计入。职…

单例模式Java实现

为什么80%的码农都做不了架构师&#xff1f;>>> public class Singleton {private static Singleton instance null;// 同步时加锁的静态对象private static final Object OL new Object();private Singleton() {// Class initialize}/** 在多线程环境下执行时的…

Go环境搭建、Sublime Text 3 安装Go语言相关插件gosublime

Go 语言环境安装 1.brew install go 默认安装&#xff0c;被安装了/usr/local/Cellar/go 目录并自设置了环境变量。 2.go env 可查看目前的go的环境变量 3.配置一个GOPATH环境变量&#xff0c;是工作目录。 根据约定&#xff0c;GOPATH下需要建立3个目录&#xff1a; bin 存储编…

ABAP性能实例七例

一、SQL Interface 1.Select ... Where vs. Select Check 用Select … Where语句效率比Select Check语句要高&#xff0c;例如&#xff1a; SELECT * FROM SBOOK INTO SBOOK_WA WHERE CARRID LH AND CONNID 0400. ENDSELECT. SELECT * FROM SBOOK INTO SBOOK_WA. CHECK: SB…

C语言中打印‘%’

C语言中打印‘%’不能直接printf("%")&#xff0c;这里的%有特殊含义的&#xff0c;要想打印的话&#xff0c;需要输入printf("%%")&#xff0c;两个%才可以将它打印出来。C语言中的其他的特殊字符&#xff0c;以后再慢慢做整理。

vba 字体颜色_多掌握一些VBA语句,让自己书写代码更加顺畅

VBA 是好东西&#xff0c;对于身在职场的人员&#xff0c;或者是积极打拼的创业者&#xff0c;是数据分析的首选&#xff0c;他可以实现量身定做&#xff0c;解决一些规律性强的问题。或者代替人处理一些可以描述出有逻辑关系的数据分析。多掌握一些VBA语句&#xff0c;让自己书…

编写jQueryUI插件(widget)

使用jQueryUI的widget来写插件&#xff0c;相比于基本的jquery插件有一些好处&#xff1a; * 方便实现继承&#xff0c;代码重用 * 默认是单例 * widget已经给你实现好的一些常用方法&#xff0c;例如destroy 带来好处的同时也带来了荆棘和陷阱&#xff0c;本文的目的就是梳理这…

mail 发送email

&#xff08;一&#xff09;首先安装ssmpt和mailutils&#xff1a; sudo apt-get install ssmtp mailutils &#xff08;二&#xff09;接下来编辑配置文件sudo gedit /etc/ssmtp/ssmtp.conf rootYOUR_PERSONAL_MAILDOMAIN mailhubsmtp.gmail.com:465 rewriteDomaingmail.com A…

C语言中字符型在计算机中的存储

一. 字符型的分类和表示范围 char&#xff1a;是有符号还是无符号数视编译器而定&#xff0c;一般为有符号数&#xff0c;下文把它全部当成有符号数进行讨论 表示范围&#xff1a;32位和64位机器上均是一个字节&#xff0c;所以是八个bit位&#xff0c;最高位为符号位之后&…