zoukankan      html  css  js  c++  java
  • 零基础学python-15.2 分解函数

    这一章节我们来说说函数的一些主要概念

    我们以一小段代码为例:

    >>> def test():
    	pass
    
    >>> 

    1. def是可执行的代码

    >>> test()
    >>> 

    我们调用test方法,尽管什么都没有,但是test已经执行了


    2.def创建了一个对象并将其赋值给某一变量

    其实python将pass这个代码封装成一个对象,然后赋值给test这个变量,主要调用这个变量有些特殊,需要加上小括号


    3. lambda创建一个对象但将其作为结果返回(暂时不懂lambda,无法解释)


    4.return将一个结果返回给调用者

    >>> def test():
    	return "这是一个测试方法"
    
    >>> test()
    '这是一个测试方法'
    >>> 


    5.yield向调用者发回一个结果对象,但是记住它离开的地方(暂时不懂yield,无法解释)


    6. global声明了一个模块级别的变量并且被赋值

    我们把下面的代码保存为test.py文件,

    def test():
    	global x
    	x=1
    	print(x)
    	b=2
    	print(b)
    test()
    x=50
    print(x)
    print(b)
    

    然后运行,得出下面结果:

    >>> ================================ RESTART ================================
    >>> 
    1
    2
    50
    Traceback (most recent call last):
      File "C:/Python34/test.py", line 10, in <module>
        print(b)
    NameError: name 'b' is not defined
    >>> 

    从异常来看,找不到b这个变量,但是我们在回头看代码,x也是这样的定义,但是x却存在,而b就不存在,所以global定义的变量是模块级别的,整个模块都可以使用


    7.nonlocal声明将要赋值的一个封闭的函数变量(暂时不懂nonlocal,无法解释)


    8.函数通过赋值(对象引用)传递

    >>> def test(x):
    	print(type(x))
    	print(id(x))
    	print(x)
    
    	
    >>> test(1)
    <class 'int'>
    505991632
    1
    >>> 


    9.参数、返回值以及变量并不需要声明

    我们从上面的方法也可以看见,对于参数、返回值、变量我们都没有做出声明,都是运行的时候有python自己决定


    10.函数需要注意的地方:

    当函数运行之后,因为他已经在内存里面,我们可以随意增加他的属性

    >>> def test():
    	name='ray'
    
    	
    >>> test()
    >>> test.name='lee'
    >>> print(test.name)
    lee
    >>> test.mind='123'
    >>> print(test.mind)
    123
    >>> 

    因为本人学java出身,所以个人不建议这样使用


    总结:这一章节主要说明函数的一些重要概念以及需要注意的地方


    这一章节就说到这里,谢谢大家

    ------------------------------------------------------------------

    点击跳转零基础学python-目录

     


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    cocos2dx CCSprite自动拉伸全屏
    linux 安装输入法
    linux jdk 配置
    Proguard.cfg 配置
    C++基本概念
    查看android keystore 别名
    view onTouch,onClick,onLongClick
    LiteDB V4.1.4版本 查询日期写法 C#
    解决Highcharts 5.0.7,IE8下bar类型图表无法显示的问题
    AspNetCore AmbiguousMatchException: The request matched multiple endpoints. Matches
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896744.html
Copyright © 2011-2022 走看看