zoukankan      html  css  js  c++  java
  • python--函数

    函数


    一、介绍

    定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。

    特性:

    1. 减少重复代码
    2. 使程序变的可扩展
    3. 使程序变得易维护

    语法定义

    def func():#函数名
        print("Hello,world")
    
    func() #调用函数
    

      

    带参数

    def add(a,b):
    	c = a+b
    	return c #返回函数执行结果
    f = add(1,2)
    

     

    二、函数参数 

    2.1形参和实参

        形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

    def add(a,b):   # a , b 为形参
    

     

         实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

    f = add(1,2) # 1, 2 实参
    

      

    2.2默认参数

    def person_info(name,age,country,sex):
    	print("-----个人信息-----")
    	print("姓名:",name)
    	print("年龄:",age)
    	print("国籍:",country)
    	print("性别:",sex)
    
    person_info("张三",23,"CN","M")
    person_info("李四",24,"CN","F")
    person_info("王五",25,"CN","F")
    person_info("赵六",26,"CN","M")
    

      

    country这个参数的值都是CN,一般而言国籍如果我们不填写,默认就是中国,这就是通过默认参数实现的。我们可以把country设置成默认参数。

    def person_info(name,age,sex,country="CN")
    

      

    这样这个参数在调用时,就不用指定了,默认就是"CN",如果指定的话,就是指定的值。

    2.3关键字参数

    一般情况下,函数传递要按照顺序,不想按顺序可以使用关键字参数,指定参数名,但是关键字参数必须放在位置参数之后。

    def person_info(name, age, gender, country='CN', province='ZJ'):
        print('姓名:', name)
        print('年龄:', age)
        print('性别:', gender)
        print('国籍:', country)
        print('省份:', province)
    
    person_info('bigberg', 20, 'M', province='JS', country='US')
    
    
    # 两个关键词参数可以交换位置,但是不能放在位置参数前面
    

      

    三、参数组

    1. 非固定位置参数(*args)
    2. 非固定关键字参数(**kwargs)

    3.1非固定位置参数

    1.  接收N个位置参数,转换成元组的形式
    2. 定义:
    def test(*args):
        print(args)
    
    test(1,2,3,4,5)
    
    #输出
    (1, 2, 3, 4, 5)  # 参数转换为元组

     如果只有一个非固定参数:

    def test(*args):
    	print(args)
    
    test(1)
    
    #输出
    (1,)
    

      

      3.传入列表

    def test(*args):
    	print(args)
    
    print("1".center(20,'-'))
    test()  #空
    
    print("2".center(20,'-'))
    test(*[1,2,3,4])   # 参数前面加*,输出的args = tuple([1,2,3,4])
    
    print("3".center(20,'-'))
    test([1,2,3,4])   # 参数前面不加* ,则列表被当作单个位置参数
    
    #输出
    ---------1----------
    ()
    ---------2----------
    (1, 2, 3, 4)
    ---------3----------
    ([1, 2, 3, 4],)
    

      4.位置参数和非固定位置参数

    def test(a,*args):
    	print(a)
    	print(args)
    
    print("1".center(20,'-'))
    test(1,2,3,4,5)
    
    #输出
    ---------1----------
    1
    (2, 3, 4, 5)
    

      

      5.关键字参数和非固定位置参数

    def test(a,*args):
    	print(a)
    	print(args)
    
    print("1".center(20,'-'))
    test(x=1,2,3,4,5)
    
    #输出
     File "G:/python/untitled/study2/parament.py", line 7
        test(x=1,2,3,4,5)
                ^
    SyntaxError: positional argument follows keyword argument
    
    位置参数要在关键字参数之后
    

      

    3.2非固定关键字参数

    1. 吧N个关键字参数,转换为字典形式
    2. 定义: 
    def test(**kwargs):
    	print(kwargs)
    
    test(name="bigberg",sex="M")
    
    输出
    {'name': 'bigberg', 'sex': 'M'}
    

      

      3.传入字典  

    def test(**kwargs):
    	print(kwargs)
    
    test(**{"name":"bigberg","sex":"M"})
    
    #输出
    {'name': 'bigberg', 'sex': 'M'}
    
    #传入字典时,一定要加 ** ,否则会报错
    

      

      4.位置参数和关键字参数

    def test(a,**kwargs):
    	print(a)
    	print(kwargs)
    
    print("1".center(20,'-'))
    #只有位置参数
    test("bigberg")
    
    print("2".center(20,'-'))
    test("bigberg",sex="M",country="CN")
    
    print("3".center(20,'-'))
    #只有关键字参数
    test(a="bigberg",sex="M",country="CN")
    
    #输出
    bigberg
    {}    
    ---------2----------
    bigberg
    {'sex': 'M', 'country': 'CN'}
    ---------3----------
    bigberg
    {'sex': 'M', 'country': 'CN'}
    

      

      5.位置参数、关键字参数和非固定关键字参数

    def test(a,age=20,**kwargs):
    	print(a)
    	print(age)
    	print(kwargs)
    
    print("1".center(20,'-'))
    #只有位置参数
    test("bigberg")
    
    print("2".center(20,'-'))
    #age 传位置参数
    test("bigberg",25,sex="M",country="CN")
    
    print("3".center(20,'-'))
    #关键字参数,位置在最后没有影响
    test(a="bigberg",sex="M",country="CN",age=25)
    
    #输出
    ---------1----------
    bigberg
    20
    {}
    ---------2----------
    bigberg
    25
    {'sex': 'M', 'country': 'CN'}
    ---------3----------
    bigberg
    25
    {'sex': 'M', 'country': 'CN'}
    

      

      6.位置参数、关键字参数、非固定位置参数和非固定关键字参数

    def test(a,age=20,*args,**kwargs):
    	print(a)
    	print(age)
    	print(args)
    	print(kwargs)
    
    test("bigberg",25,1,2,3,4,sex='M',country='CN')
    
    #输出
    bigberg
    25
    (1, 2, 3, 4)
    {'country': 'CN', 'sex': 'M'}
    

      如果age传入的是关键字参数(age=25)并且在飞固定位置参数之前,就会报错

    test("bigberg",age=25,1,2,3,4,sex='M',country='CN')
    
    #输出
      File "G:/python/untitled/study2/parament.py", line 8
        test("bigberg",age=25,1,2,3,4,sex='M',country='CN')
                             ^
    SyntaxError: positional argument follows keyword argument
    

      

     

  • 相关阅读:
    js统一设置富文本中的图片宽度
    springboot 使用Filter
    js判断当前浏览器
    es安装ik后报错无法启动 read write
    logback Filter LevelFilter ThresholdFilter
    使用vue构建一个可视化大数据平台
    常用ES6-ES10知识点总结
    常见的web安全问题总结
    web性能优化指南
    使用node+express+mongodb实现用户注册、登录和验证功能
  • 原文地址:https://www.cnblogs.com/bigberg/p/6527297.html
Copyright © 2011-2022 走看看