1,函数的变量

2,函数的返回值

1,函数的变量

1.0,函数的变量分为局部变量和全局变量。

  1. def fun():
  2. x = 100
  3. print x

这个x是局部变量,函数执行完后,x的变量就会销毁,只能在函数内部有效。

  1. x = 100
  2. def fun():
  3. print x
  4. print x

这里的x = 100'是全局变量,函数内部也可以调用。但是调用的只能用于print,做其他操作都会报错(这里的x可以是数字或者字符串)。比如:

  1. x = 100
  2. def fun():
  3. print x
  4. x+=1

像这个执行了 x+=1 的动作就会报错。

当然,可以通过global关键字在函数内部声明为全局变量,这样声明后,就可以做其他操作。

  1. x = 100
  2. def fun():
  3. global x
  4. x +=1
  5. print x

如果你的全局变量为列表,字典,集合这样可变的数据类型的变量,其实在函数内部也是可以更改它的值。

  1. name=['tom','jack']
  2. def fun():
  3. name[0]='tom1'
  4. print name
  5. fun()
  6. print name

 

输出结果都为:['tom1', 'jack'],可见函数内部其实也是可以更改变量值的。

1.1,在函数内部定义的变量在函数外部也可以使用,也使用关键字global关键字。(不建议这么操作)

  1. def fun():
  2. global y
  3. y = 1
  4. fun()
  5. print y

这样y也就可以输出了,但前提条件是你必须先调用函数。

1.2,函数locals,输出脚本执行中有哪些变量。如果写到函数内部,返回的则是函数内部的所有变量。如果是写的是程序里面,则输出的程序所有的变量。

  1. def fun():
  2. x = 1
  3. y = 2
  4. print locals()

查看程序的所有变量,以字典形式输出。

  1. #!/usr/bin/env python
  2. print 'hello,world'
  3. pritn locals()

2,函数返回值(return)

函数如果默认没有return语句,则函数默认return None.函数遇到return结束运行。

  1. def test():
  2. print 'test'
  3.  
  4. print test()

上述代码返回:test和None.为什么会有None呢?因为函数如果没有retun语句,默认会return None。

  1. def test2(var):
  2. if str(var).isdigit():
  3. return 'this is number'
  4. return 'thisi is not number'
  5.  
  6. print test2(1) 

可以发现,if 后面没用else。上面写到了,执行到return的时候代码,函数就会停止运行。所以只要上面的if执行了,后面的return就不会执行。

上面讲的return都是返回1个,那么是否可以返回多个呢?

  1. def test2(var):
  2. if str(var).isdigit():
  3. return 'this is number','hello',['a','b'],{'name':'tom'}
  4. data = test(2)
  5. print data

  

上面返回结果:('this is  number', 'hello', ['a', 'b'], {'name': 'tom'}),可见,如果返回值的个数是多个的话,会以元祖的形式返回。

小结:

1,变量分为全局变量和局部变量。如果定义一个全局变量,函数内部如果调用这个局部变量,只能使用print 的关键字输出(换句话说函数内部其实是知道全局变量的,只是不能操作全局变量),所以如果你在函数内部
使用global 关键字,就是在告诉程序,我要操作全局变量了。此时,函数才可以正式的操作全局变量。

2,局部定义的变量如果想变为全局变量,可以使用global关键字。这样这个局部变量就可以称为全局变量了,但前提条件是你要执行该函数。

3,函数返回值的个数如果为0,则默认返回None,如果是多个返回值,则以元祖的形式返回。

python的函数(二)的更多相关文章

  1. python魔法函数(二)之__getitem__、__len__、__iter__

    魔法函数会增强python类的类型,独立存在 __getitem class Company: def __init__(self, employees): self.employees = empl ...

  2. python之函数(二)

    上一篇中我们在函数体中的写的都是打印语句,用print来输出打印结果.但是在实际使用的时候,我们并不需要将结果输出在控制台上.这时候该如何解决呢? 1. return返回值. 我们可以将函数的结果通过 ...

  3. 【278】◀▶ Python 数学函数说明

    参考:Python 数学函数说明 目录: 一.Python 数学函数 二.Python 随机数函数 三.Python 三角函数 四.Python 数学常量 一.Python 数学函数   函数 返回值 ...

  4. python学习笔记11(函数二): 参数的传递、变量的作用域

    一.函数形参和实参的区别 形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数. 实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数. >>> ...

  5. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  6. python之内置函数(二)与匿名函数、递归函数初识

    一.内置函数(二)1.和数据结构相关(24)列表和元祖(2)list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素).tuple:将一个可迭代对象转化成元组(如果是字典,默认将k ...

  7. python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法

    python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...

  8. 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  9. 学以致用三十二-----python中函数的括号使用

    一直以来对python中函数括号的使用,有点分不清楚,到底什么时候用括号,什么时候不用括号,造成了很大看困惑. 今天来总结下. class aaa(): y = 'you' def __init__( ...

随机推荐

  1. JavaScript -- Location

    -----043-Location.html----- <!DOCTYPE html> <html> <head> <meta http-equiv=&quo ...

  2. 安装flutter和dart总结

    1 manjaro从软件仓库安装就行,但是也可以下载安装包.然后添加到Path目录 我是安装dart从软件仓库, flutter下载压缩包添加到path 1.1 需要将android sdk , ex ...

  3. Chapter 3 Phenomenon——21

    "Nobody will believe that, you know." “你知道吗没有人会相信会是这样的” His voice held an edge of derision ...

  4. AJAX(Jquery)

    一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取得服务端当前时间 简单形式:jQuery对象.load(url) 返回结果自动添加到jQuery对象代表的 ...

  5. 在Hadoop 2.3上运行C++程序各种疑难杂症(Hadoop Pipes选择、错误集锦、Hadoop2.3编译等)

    首记 感觉Hadoop是一个坑,打着大数据最佳解决方案的旗帜到处坑害良民.记得以前看过一篇文章,说1TB以下的数据就不要用Hadoop了,体现不 出太大的优势,有时候反而会成为累赘.因此Hadoop的 ...

  6. Flutter踩坑日记:Tab导航栏保持子页面状态

    最近应邀票圈小伙伴躺坑Flutter,项目初步雏形完结.以原来的工具链版本为基础做了Flutter版本,不过后面还是需要优化下项目接入Redux,以及扩展一些Native方法. 这里记录一下在开发过程 ...

  7. 网络之NSURLSession

    NSUrlSession参考的这篇博客,自己也调试了它的代码:http://www.it165.net/pro/html/201406/15223.html ,对NSUrlSession还不太理解,先 ...

  8. Java - HashTable源码分析

    java提高篇(二五)-----HashTable 在java中与有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,valu ...

  9. Java - 线程让步和休眠

    Java多线程系列--“基础篇”06之 线程让步 概要 本章,会对Thread中的线程让步方法yield()进行介绍.涉及到的内容包括:1. yield()介绍2. yield()示例3. yield ...

  10. 如何启动一个Vue3.x项目

    1. 安装node.js 2. cd到项目目录下 3. npm run serve Node.js下载与安装(npm) Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运 ...