Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> def fun1():
return [1,2,3] >>> print(fun1)
<function fun1 at 0xb71cfb8c>
>>> a=fun1()
>>> a
[1, 2, 3]
>>> def fun2():
return 4,5,6 >>> b=fun2()
>>> b
(4, 5, 6)
>>> def fun3():
print "hello woeld" >>> c=fun3()
hello woeld
>>> c
>>> c
>>> print(fun(3)) Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
print(fun(3))
NameError: name 'fun' is not defined
>>> type(c)
<type 'NoneType'>
>>> print(c)
None
>>> type(c)
<type 'NoneType'>
>>>

函数的返回值可以是一个列表或一个元组,如果没有return,那么仍然会返回一个NONE,类型那个为typenone,

对于全局ii变量,我们在函数中只能进行引用,而不能进行修改

局部在堆栈中分配,

当我们你试图在函数中修改全局变量的时候,python会发生屏蔽,会在函数中发生屏蔽机制,额外创建一个临时变量,只能对临时变量进行修改

但是我们可通过global关键子在函数中强制对全局变量进行修改

 >>>
>>> number=5
>>> def fun6():
global number
number=10
return number >>> fun6()
10
>>> print(num)
10
>>> print(number)
10
>>>

python函数还可以进行嵌套

>>>
>>> def f1():
print("fun1..")
def fun2():
print("fun2")函数作用范围同c/c++
fun2() >>> f1()
fun1..
fun2
>>>

函数都嵌套传参数,对于第一种方法,如果我们只是传了一个参数,那么会返回一个函数,表示需要想第二个函数传参数,

简单的做法就是直接连续写两个括号传两个参数

 >>> def fun1(x):
def fun2(y):
return x*y
return fun2 >>> fun1() Traceback (most recent call last):
File "<pyshell#108>", line 1, in <module>
fun1()
TypeError: fun1() takes exactly 1 argument (0 given)
>>> fun1(5)
<function fun2 at 0xb71cfb8c>
>>> type(fun1(5))
<type 'function'>
>>> i=fun1(5)
>>> i(10)
50
>>> fun1(3)(8)
24

对于python3.0之前,为了可以在局部对外部变量进行改变,因为list不是在堆栈山申请的,所以我们可以改变外部的list变量

 >>> def fun5():
x=[5]
def fun6():
x[0]*=x[0]
return x[0]
return fun6() >>> fun5()
25

3.0之后可以只有 nonlocal

闭包就是内部函数可以使用外部的作用区间(不是全局的)进行引用,那么这个内部函数就被叫闭包

python返回值与局部全局变量的更多相关文章

  1. python返回值进行unpack

    最近在写yolov3,因为yolov3的多输出性质,所以我打算写适配多输出的工具函数,在numpy中可以在一个array中包含多个不同维度的array,但在tensorflow中一个tensor只能保 ...

  2. python函数返回局部变量,局部&全局变量同名问题

    其实关于返回局部变量不只是python的问题,凡是使用堆栈结构处理函数的语言都会有这样的问题,切记不要返回局部变量.因为当创建函数的堆栈撤销,所有对局部变量的修改都灰飞烟灭.来看我的小例子 def h ...

  3. javascript学习笔记(二):定义函数、调用函数、参数、返回值、局部和全局变量

    定义函数.调用函数.参数.返回值 关键字function定义函数,格式如下: function 函数名(){ 函数体 } 调用函数.参数.返回值的规则和c语言规则类似. <!DOCTYPE ht ...

  4. cmd获取python返回值

    test.py代码如下: import urllib2 import sys try: f = urllib2.urlopen('http://www.baidu.com/',timeout = 10 ...

  5. python返回值的缺省设置

    有时候并不需要返回所有的值,但是原始函数的return语句中又有较多参数时: 方法一:修改原始返回值,只返回需要的参数 方法二:如果原始函数时第三方库或者python自带库,则直接修改可能不太好,于是 ...

  6. python返回值内取出某一段数据的方法

    面讲的方法只适用于返回值长度固定的内容,长度不固定,每次取得值就不会一样 比如,我们需要取出“提取码: y3rx ”“:”后面的“y3rx” 目标数据在内容的第5位到第9位,做左侧为第1位,冒号后面有 ...

  7. Python返回值不同格式的取值方式

    例: { "success": true, "topic_id": "5c89021773798770589936b0"} 转换成text, ...

  8. Python3学习之路~3.1 函数基本语法及特性、返回值、参数、局部与全局变量

    1 函数基本语法及特性 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义: d ...

  9. Python 基础之返回值与函数使用与局部变量和全局变量locals() 和 globals()

    一.函数的返回值 return return: 自定义返回值,返回到哪里? 返回到函数的[调用处]1.return 后面可以跟上六个标准数据类型,除此之外,可以跟上 类对象,函数,如果不写return ...

随机推荐

  1. 为什么 Java 8 中不再需要 StringBuilder 拼接字符串

    为什么 Java 8 中不再需要 StringBuilder 拼接字符串 来源:codeceo 发布时间:2016-12-27 阅读次数:427 0   在Java开发者中,字符串的拼接占用资源高往往 ...

  2. Oracle系列——开发中奇葩问题你遇到几个(一)

    前言:在使用oracle数据进行开发的时候有没有经常出现一些很奇怪.很纳闷.很无厘头的问题呢.下面是本人使用oracle一段时间遇到的问题小节,在此做个记录,方便以后再遇到类似的问题能快速解决.如果你 ...

  3. 了解 JS 原型

    原型概念 当创建了一个函数时,就会根据一组特定的规则为该函数创建一个 prototype 属性,这个属性指向函数的原型对象.在默认情况下,所有原型对象都会自动获得一个constructor 的属性 这 ...

  4. 通过COOKIE欺骗登录网站后台

    1.今天闲着没事看了看关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)的知识,xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语 ...

  5. 通过Iframe在A网站页面内嵌入空白页面的方式,跨域获取B网站的数据返回给A网站!

    以下代码只是为演示该方法具体是如何操作的,实际的意义并不大. 其实这个方法还可以解决很多方面的跨域操作,以下两点为我工作中遇到的情况! 比如A系统中打开B系统页面的时候,获取B系统页面高度,A系统中可 ...

  6. Unit Test测试框架中的测试的执行顺序

    [ClassInitialize()] [ClassCleanup()] [TestInitialize()] [TestMethod] [TestCleanup()] 在执行一个或多个[TestMe ...

  7. vue 配置文件详解

    var path = require('path'); // NodeJS中的Path对象,用于处理目录的对象,提高开发效率. // 模块导入 module.exports = { // 入口文件地址 ...

  8. airline 設定 安裝

    .vimrc " install airline plugin using Vundle Plugin 'vim-airline/vim-airline' " install ai ...

  9. Delphi dll 断点调试

    1.dll 要有一个依托的exe(怎么做 相信用dll了一定知道) 2.选项中的compling中的debugging中的选项,linking中的所有选项 3.最后一个也就是最重要的 run中的par ...

  10. Alpha阶段第三次Scrum Meeting

    情况简述 Alpha阶段第三次Scrum Meeting 敏捷开发起始时间 2016/10/24 00:00 敏捷开发终止时间 2016/10/25 00:00 会议基本内容摘要 总结了之前学习的内容 ...