zoukankan      html  css  js  c++  java
  • 函数

    函数说白了,就是把一组代码合到一起,可以实现某种功能,需要再用到这个功能的话,直接调用这个函数就行了
    1.函数的定义如下
    定义函数使用def关键字,后面是函数名,函数名不能重复
    def my_open(fw):
    fw = open('a.txt','a+')
    fw.seek(0)
    my_open()

    2.位置参数:按照参数的位置来进行传参,比如说下面的reg函数,name和age就是位置参数,位置参数是必传的
    eg:
    def reg(name,age,sex='男'):
    #age、name必填参数,位置参数
    #sex是默认值参数,不是必传
    print('hello %s,age is %s,sex is %s'%(name,age,sex))
    reg(age='吴冰',name=38,sex='未知')
    3.默认参数:默认参数就是在定义形参的时候,给函数默认赋一个值,默认参数不是必填的,如果给默认参数传值的话,它就会使用你传入的值。如果使用默认值参数的话,必须放在位置参数后面定义
    eg:
    def reg(name,age,sex='男'):
    #age、name必填参数,位置参数
    #sex是默认值参数,不是必传
    print('hello %s,age is %s,sex is %s'%(name,age,sex))
    reg(age='吴冰',name=38,sex='未知')
    4.可变参数:可变参数用*来接收,后面想传多少个参数就传多少个,如果位置参数、默认值参数、可变参数一起使用的的话,可变参数必须在位置参数和默认值参数后面。可变参数也是非必传的
      #可变参数,也叫参数组,也不是必填的,它接收到的是一个元组
    #它把调用函数时穿进去的每一个参数都放到一个元组里
       def more_arg(name,age,sex='nan',*agrs):#位置参数、默认值参数、可变参数,可变参数会把后面多传的参数都放到args这个元组中
            #当然args名字是随便写的,不过一般我们都写args
                 print(name,age,agrs)
            more_arg('Marry',18,'nv','python','China')#调用
    5.关键字参数:关键字参数使用**来接收,后面的参数也是不固定的,想写多少个写多少个,当然也可以和上面的几种一起来使用,如果要一起使用的话,关键字参数必须在最后面。

    注意:使用关键字参数的话,调用的时候必须使用关键字传参。关键字参数也是非必传的。

      #关键字参数,接收的是一个字典,调用得用xx=11,也不是必填的

      #传入字典调用的时候就得写**{'age': 18, 'name': '吴冰'}

    eg:

                    def kw_arg(name,**kwargs):#位置参数、关键字参数,调用的时候会把传入的关键字参数放到kwargs这个字典中

                        print(name,kwargs)
                    kw_arg('sriba',sex='男',age=18)#调用,sex和age就是关键字调用
    6.必填参数、默认值参数、可变参数和关键字参数一起用
    def other2(name,country='china',*args,**kwargs):
    #如果必填参数、默认值参数、可变参数和关键字参数你要一起用的话
    #必须参照必填参数、默认值参数、可变参数和关键字参数的顺序接收,否则就会报错
    print(name)
    print(country)
    print(args)
    print(kwargs)
    other2('wubing','xxx')
    other2('wubing','beijing','python','changping',user='niuhanyang')
    7.关键字参数调用

    def write(filename,model,ending,user,os,money,other):
    print(filename)
    print(model)
    print(ending)
    print(user)
    print(os)
    print(money)
    print(other)
    write(os='Windows',user='wubing',model='w',filename='a.txt',ending='utf-8',money=9999,other='xxxxx') #可以不按顺序,不过要指定
    write('a.txt','w',money=99,os='windos')
    write(os='windos','a.txt')

    8.函数的返回值:为什么要有返回值呢,是因为在这个函数操作完之后,它的结果在后面的程序里面需要用到

      每个函数都有返回值,如果没有在函数里面指定返回值的话,在python里面函数执行完之后,默认会返回一个None,函数也可以有多个返回值,如果有多个返回值的话,会把返回值都放到一个元组中,返回的是一个元组。函数中的返回值使用return,函数在遇到return就立即结束。 

        #1、函数碰到return,立即结束这个函数
    #2、调用完函数之后,返回计算的结果
    #3、函数可以没有返回值,如果没有返回值的话,默认给你返回None
    #如果这个函数的处理结果咱们需要在别的地方用到,那你就得给函数返回值
    #如果函数return多个值的话,那么它会把多个值放到一个元组里面去
    eg1:
    def plus(a,b):
    c = a+b
    return c
    eg2:
    score1 = 50
    score2 = 90
    def echo():
    return score1,score2
    eg3:
    def calc(x,y):#这个就是定义了一个有返回值的函数
                    x*y
                    return c,x,y
                res calc(5,6)#把函数的返回结果赋值给res
                print(res)
    9.全局变量和局部变量
      #在函数里面定义变量叫局部变量,它只能在函数里面用,出了该函数外,就不能使用了
    #在函数外面定义的变量,是全局变量,在函数内也可以使用
    #如果想在函数里面修改全局变量的值,那么要先用global关键字声明
    #要修改全局变量是int、string的话,必须得写global
    #如果是字典和list的话,要修改的话,不能加global
    eg:
    name 'marry'#字符串全局变量
            names []#list全局变量
            print(name)
            print(names)
            def test():
                global name #修改name的值就需要用global关键字
                name 'Sriba'
                names.append(name)#修改全局变量names的值
                return names
           test()调用函数
           print('修改后',name)
           print('修改后names',names)




  • 相关阅读:
    2018-2019-2 20165316 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
    2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用
    2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析
    2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践
    2018-2019-2 《网络对抗技术》Exp2 后门原理与实践
    2018-2019-2 20165316 《网络对抗技术》Exp1 PC平台逆向破解
    2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165316
    最近决定要重新回到博客了
    清华大学OS操作系统实验lab1练习知识点汇总
    基本数据结构学习总结: 二叉树的遍历
  • 原文地址:https://www.cnblogs.com/MLing/p/6980083.html
Copyright © 2011-2022 走看看