zoukankan      html  css  js  c++  java
  • python基础之函数--返回值和参数

    函数

    一、为何要有函数?

    不加区分地将所有功能的代码垒到一起,问题是:

    1、代码可读性差

    2、代码冗余

    3、代码可扩展差

    如何解决?

    函数即工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用

    结论:函数使用必须是:先定义,后调用

    二、函数的使用方法

     1 python中函数定义方法:
     2  
     3 def test(x):
     4     "The function definitions"
     5     x+=1
     6     return x
     7      
     8 def:定义函数的关键字
     9 test:函数名
    10 ():内可定义形参
    11 "":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
    12 x+=1:泛指代码块或程序处理逻辑
    13 return:定义返回值
    
    
    调用运行:可以带参数也可以不带
    函数名()

    1、函数的返回值

    当一个函数没有使用return,显示定义返回值时,朋友通红解释器会返回None

    2、函数的参数和使用

    ===================》part1

    位置参数:按照从左到右的顺序依次定义的参数

    def foo(x,y):
        print(x)
        print(y)

    按照位置定义的形参,必须被传值,多一个不行,少一个不行

    #foo(1,2,3)

    按照位置定义的实参,与形参一一对应

    #foo(1,2,3)

    ===================》part2

    关键字参数:实参在定义时,按照key=value形式定义

    def foo(x,y):
        print(x)
        print(y)
    foo(y=10,x=1)

    关键字参数可以不用像位置参数那样一一对应

    注意事项:

    a、位置实参必须在关键字实参的前面

    b、实参的形式既可以用位置实参又可以是关键字实参,但是一个形参不能重复传值

    ===================》part3

    默认参数:在定义函数阶段,就已经为形参赋值,定义阶段有值,调用阶段可以不用传值

    # def func(x,y=10):
    #     print(x)
    #     print(y)
    
    
    # func(1,20)
    # func(1)

    实参分为:位置实参和关键字实参       形参分为位置形参和默认参数

    #形参的应用:值经常变化的需要定义成位置形参,
    # 值大多数情况下都一样,需要定义成默认参数def register(name,age,sex='male'):     print(name,age,sex)register('alex',1000)register('wupeiqi',9000)register('yuanhao',10000)register('王铁蛋',10000,'female')

    默认参数需注意的问题:

    a、必须放在位置形参的后面

    b、默认参数通常要定义成不可变类型

    c、默认参数只在定义阶段被赋值一次

    x=10
    def func(name,age=x):
        print(name)
        print(age)
    x=20
    
    func('egon')

    ===================》part4

    可变长参数:可变长指的是实参的个数不固定

    按位置定义的可变长度的实参:*

    按关键字定义的可变长的实参:**

    按位置定义:
    def
    func(x,y,*args): #x=1,y=2,args=(3,4,5,6) print(x,y) print(args) func(1,2,3,4,5,6)

    # def func(x,y,z):
    # print(x,y,z)
    #
    # # func(1,*(2,3)) #func(1,2,3)
    # func(*(2,3)) #func(2,3)

    #
    # def func(x,y=2,z=1):
    # print(x,y,z)
    #
    #
    # func(*('a','b','c')) #func('a','b','c')

    按关键字定义;
    def func(x,y,**kwargs):           #x=1,y=2,kwargs={'a':1,'b':3,'z':3}    print(x,y)    print(kwargs)

    func(1,y=2,z=3,a=1,b=3) # def func(x,y,**kwargs): #x=1,y=2,**kwargs=**{'a':1,'b':3,'z':3} # print(x,y) # print(kwargs) # # func(1,y=2,**{'a':1,'b':3,'z':3}) #func(1,y=2,z=3,b=3,a=1) # def func(x,y=1,z=1): # print(x,y,z) # # func(**{'y':2,'x':1,'z':3})

    命名关键字参数:定义在*后的形参,这类形参,必须被传值,而且要求实参必须是以关键字的形式来传值

    def register(name,age,*,group,**kwargs):
        print(name)
        print(age)
        print(kwargs)
    
    
    ##register('egon',18)
    register('egon1',18,hobby='paly1',group='group1')

    形参的命名顺序:形参:位置形参,默认参数,*args,命名关键字参数,**kwargs

  • 相关阅读:
    Django(app的概念、ORM介绍及编码错误问题)
    Django(完整的登录示例、render字符串替换和redirect跳转)
    Construct Binary Tree from Preorder and Inorder Traversal
    Single Number II
    Single Number
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Binary Tree Zigzag Level Order Traversal
    Recover Binary Search Tree
    Add Binary
  • 原文地址:https://www.cnblogs.com/fenglinglf/p/6993940.html
Copyright © 2011-2022 走看看