zoukankan      html  css  js  c++  java
  • python学习第五天——函数(重点)

    目前不清楚函数和方法是不是一个概念,python的函数写法和java除了格式(冒号缩进这些)有区别外,定义和参数上区别很大

    python中函数的概念很重要

    • 函数定义
    def say_hello():
        # 属于该函数的语句块
        print('hello world')
    # 函数结束
    
    say_hello()  # 调用函数

    说明:使用关键字def 定义,冒号结尾,函数名均用小写字母,用下划线不要用驼峰,语句块要缩进,两个函数之间尽量空两行

    • 参数
    def func_name(para1, para2)

    说明:形参和实参概念不变,不需要指定类型,左括号后,右括号前不要空格

    • 局部变量和全局变量
    x = 50
    
    def func(x):
        print(x)
        x = 2
        print( x)
    
    func(x)
    print(x)
    输出:50,2,50

    说明:局部变量作用域和java相同,只在函数内部

    x = 50
    
    def func():
        global x
    
        print(x)
        x = 2
        print(x)
    
    func()
    print(x)
    输出:50,2,2

    说明:如果想在函数内部对函数外的变量赋值,需要声明为global变量,称为全局变量或顶级变量,可同时声明多个全局变量,如global x,y,z

    • 默认参数值
    def say(message, times=1):
        print(message * times)
    
    say('Hello')
    say('World', 5)

    说明:形参指定默认参数值时,值必须是常数;= 号前后都不要留空格;这个形参必须在未指定默认值的形参之后,错误示例:def func(a=5,b)

    • 关键字参数
    def func(a, b=5, c=10):
        print(a, b, c)
    
    func(3, 7)
    func(25, c=24)
    func(c=50, a=100)

    说明:这样调用时可以不关注参数位置,而是通过参数名(关键字)指定实参

    • 可变参数
    def total(a=5, *numbers, **phonebook):
        print('a', a)
    
        # 遍历元组中的所有项
        for e in numbers:
            print('e', e)
    
        # 遍历字典中的所有项
        for first, second in phonebook.items():
            print(first,second)
    
    print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))

    说明:

    我们在java规约中,强调要避免使用可变参数

    python中,当声明了带*号的参数  *param时,从这个参数开始后的所有参数都会被收集进入一个名为param的元组

         当声明了带**的参数 **param时,从这个参数开始,所有参数都会被收集进入一个名为param的字典

    python会自动判断值所属的类型,收集从哪个入数开始,到哪个入参结束

    • return
    def maximum(x, y):
        if x > y:
            return x
        elif x == y:
            return 'equal'
        else:
            return y
    
    print(maximum(2, 3))

    说明:

    遇到return语句,立即跳出函数;

    没有返回值的语句(return)等价于return None (python中的None和java中的null的地位稍有区别);

    如果函数没有return语句,系统会自己在函数结尾添加return None语句;

    • pass
    def func():
        pass
    
    print(func())

    说明:pass表示一个空语句块,通常用于占位,上述输出结果为:None

    • DocStrings
    def max(x, y):
        '''Prints the maximum of two numbers.
    
        The two values must be integers.'''
        # 如果有必要,将参数转为整数
        x = int(x)
        y = int(y)
    
        if x > y:
            print(x)
        else:
            print(y)
    
    print_max(3, 5)
    print(print_max.__doc__)

    说明:DocStrings是文档字符串,各个规约中,很看中文档字符串这部分的编写,在非平凡函数(行数较多,或逻辑较复杂的)中强烈建议加上

    编写规则:函数的首行首字母大写,句号结尾;第二行为空行;第三行及其以后为具体描述;前后用三引号;

    通过   __doc__属性来访问函数的DocStrings,之所以说属性,前面讲了,一切皆对象,函数也是对象,对象有属性,__doc__就是函数的其中一个属性,和js相近


    以上,介绍的都是函数的基本的语法和规则,具体的还需要多练

  • 相关阅读:
    sdnu 1513 字符串翻转
    hdu-1559 最大子矩阵(二维树状数组模板题)
    hdu-1556 树状数组
    1049.饭盒
    1092.校门外的树
    1012.区间合并
    1054.数独
    1175.开心的金明 01背包
    空格(Space)的ASCII码值是:32
    js为lable和div赋值
  • 原文地址:https://www.cnblogs.com/yb38156/p/12492375.html
Copyright © 2011-2022 走看看