zoukankan      html  css  js  c++  java
  • python学习之函数基础

    第一个python函数:

    >>> def func_1():
    ...     print 'hello python'
    ... 
    >>> func_1()
    hello python

    变量:根据作用域不同,分为局部变量和全局变量

            局部变量:在函数内定义的变量,局部变量作用域在函数之内

            全局变量:定义在函数之外,在函数内使用global关键字标记,全局变量作用域为整个模块;全局变量尽量少用

     

    示例:局部变量:

    #!/usr/bin/env python
    # coding=utf-8   申明中文字符集时'='两边不能留空格
    arg = 10  #全局变量
    def func():
            arg = 2 #局部变量,与外边的arg为不同的两个变量
            print arg
    func()
    print arg

    执行结果:

    [root@server24 python]# chmod +x func_1.py 
    [root@server24 python]# ./func_1.py 
    2
    10

    示例:全局变量:

    #!/usr/bin/python
    #coding=utf-8
    arg = 10
    def func():
            global arg  #global定义arg为全局变量,下面的赋值会覆盖函数体>外的操作
            arg = 2
            print arg
    func()
    print arg

    执行结果:

    [root@server24 python]# chmod +x func_2.py 
    [root@server24 python]# ./func_2.py 
    2
    2

    带参数的函数

    位置参数:按顺序依次给变量赋值

    关键字参数:顺序不再重要,可按关键字给变值

    示例:位置参数:

    #!/usr/bin/env python 
    #coding=utf-8
    def func(arg1,arg2,arg3):
            print arg1,arg2,arg3
    
    func(1,2,3)  #局部变量

    执行结果:

    [root@server24 python]# chmod +x func_3.py 
    [root@server24 python]# ./func_3.py 
    1 2 3

    示例:关键字参数:

    #!/usr/bin/env python 
    #coding=utf-8
    def func(arg1,arg2,arg3):
            print arg1,arg2,arg3
    
    func(arg1=1,arg3=2,arg2=3)  #局部变量

    执行结果:

    [root@server24 python]# ./func_3.py 
    1 3 2

    位置参数和关键字参数可以混合使用,但是需要注意的是位置参数须在关键字参数之前

    示例:位置、关键字参数混合使用

    #!/usr/bin/env python 
    #coding=utf-8
    def func(arg1,arg2,arg3):
            print arg1,arg2,arg3
    
    func(1,arg3=2,arg2=3)  #局部变量

    执行结果:

    [root@server24 python]# ./func_3.py 
    1 3 2

    默认参数:对一个或多个指定默认值:

    示例:默认值参数:

    #!/usr/bin/env python
    #coding=utf-8
    def func(arg1,arg2=10):  #有默认值参数须在非默认值参数后面
            print arg1,arg2
    func(100)  #非默认值参数须赋值,默认值参数可赋可不赋值

    执行结果:

    [root@server24 python]# ./func_4.py 
    100 10


    可变参数

    python支持可变参数。参数分为两种,一种是位置参数,一种是关键字参数。 

    示例:可变位置参数:

    #!/usr/bin/env python
    #coding=utf-8
    def func(*args):  #args在函数体内被打包成一个元组
            print type(args) 
            print args
    func(1,2,3,4,56,7)

    执行结果:

    [root@server24 python]# ./func_5.py 
    <type 'tuple'>
    (1, 2, 3, 4, 56, 7)

    示例:可变关键字参数:

    #!/usr/bin/env python
    #coding=utf-8
    def func(**args):  #args在函数体内被打包成一个字典
            print type(args)
            print args
    func(name='tom',age='30',qq='33804139')

    执行结果:

    <span style="font-size:14px;">[root@server24 python]# vim func_5.py 
    [root@server24 python]# ./func_5.py 
    <type 'dict'>
    {'qq': '33804139', 'age': '30', 'name': 'tom'}

    混合使用:

    示例:

    #!/usr/bin/env python
    #coding=utf-8
    def func(name,age,*args,**args1):  #非可变参数必须在可变参数之前;可变位置参数须在可变关键字参数之前
            print name,age
            for i in args:
                    print i
            for x,y in args1.items():
                    print "%s ==> %s" % (x,y)
    
    func('tom',30,33804129,8888888,hello='python')

    执行结果:

    [root@server24 python]# ./func_6.py 
    tom 30
    33804129
    8888888
    hello ==> python


    参数解包

    参数解包发生在函数调用时。

        * 用于序列为位置参数。

        ** 用于解包字典为关键字参数

    示例:

    #!/usr/bin/env python
    #coding=utf-8
    def func(*args,**args1):   #args打包成一个元组,args1打包成一个字典
            for i in args:
                    print i,
            for x,y in args1.items():
                    print "%s ==> %s" % (x,y)
    
    li = [2,3,4,5,6,7]
    dic = {'name':'tom','age':30}
    #func(li[0],li[1],li[2])  #传统的调用方法
    func(*li,**dic)   #将列表li解包成位置参数并传递进去;将字典dic解包成>关键字参数并传递进去

    执行结果:

    [root@server24 python]# ./func_7.py 
    2 3 4 5 6 7 age ==> 30
    name ==> tom


    函数返回值

        在函数体内输出print,会产生一定的副作用,一般在函数体内将结果return出来。

        return关键字:

            可以返回任何对象

            可以变相返回多值:默认返回的是一个元组

    示例:

    #!/usr/bin/env python
    #coding=utf-8
    def func(i):
            j = i * 2
            k = i * 5
            return j,k  #返回两个值,调用时需要用两个变量接收
    x,y = func(2)
    print x,y

    执行结果:

    [root@server24 python]# ./func_8.py 
    4 10

    当函数中没有return关键字时,函数会默认返回None 

  • 相关阅读:
    设计模式之GOF23外观模式
    设计模式之GOF23装饰模式
    设计模式之GOF23组合模式
    设计模式之GOF23桥接模式
    设计模式之GOF23代理模式03
    设计模式之GOF23代理模式02
    设计模式之GOF23代理模式01
    设计模式之GOF23适配器模式
    设计模式之GOF23原型模式02
    设计模式之GOF23原型模式01
  • 原文地址:https://www.cnblogs.com/guoew/p/10391058.html
Copyright © 2011-2022 走看看