function的定义


'''
函数的概念:
    将特定功能的一些代码,整合在一个单元中,这个单元就叫做方法或函数
函数的定义:
    1、使用关键字def定义
    2、def后跟的是函数名(标识符)
    3、函数名后面一定要有一对小括号(),python2是不带小括号的,python3要求必须带
    4、小括号中是可以定义参数的(形式参数),不用指定数据类型,实际调用方法时传什么类型的数据就处理什么数据
    5、小括号后是冒号,(冒号和缩进是在一起)
    6、在函数代码块的第一行,可以放文档字符串(多行注释),如果不知道此函数的功能,可以使用函数._doc_查看函数的功能
    7、return:
        1)方法中不写return语句,返回None
        2)方法中写return,但不指定返回的变量或值,返回None
        3)方法中写return,并制定返回的数据,返回指定数据
        4)方法中写return,并指定返回多个数据,使用逗号分隔,返回多个数据的元组

    函数的调用:函数不调用,不执行
    1、直接调用
        area(5, 6),只需要用到一次,调用该方法并不关心返回值
    2、输出调用
        print(area(5, 6)),只需要用到一次
    3、赋值调用
        在代码中可能会使用多次,需要有一个变量把返回的数据保存起来


类和方法特性差不多:方法不调用,不执行;类,不创建对象,不能调用成员方法
对于类方法,是可以直接通过类名调用的,不需要创建对象的,eg:math.sin()
不用创建对象就可以调用的属性(变量)叫静态属性,是可以通过类名调用
python类中的构造方法名是:__init__(self)
私有变量是需要在变量前面加__
类变量:所有类的对象同意使用的变量,不会随着对象的不同而改变
实例变量:是创建了对象才有的变量
局部变量:在类的方法中或者方法的声明上()里面定义的变量
python中以.py结尾的文件,我们就叫做模块
包:就是文件夹,里面需要有个文件__init__.py
导包或导模考:import XXX
        from XXX import yyy
        import XXX as zzz

'''

# 声明一个方法,要指定参数聊表的,怎么指定?
# 在python定义的变量,不是我们直接指定是什么类型,而是通过赋值的形式来确定的
# 参数列表就只有变量名,不需要数据类型,那么这个变量就可以接收任意类型的数据了

# def sum(a, b):
#     '''
#     这是一个加法运算
#     '''
#     # pass  #空语句,起到占位符的作用
#     return a + b

# print(sum.__doc__)  #文档字符串,这是一个加法运算

# # print(sum(2, 3))


# 求长方形面积的方法
def area(high, width):
    return high * width


print(area(5, 6))

 

'''
函数的参数类型使用:
    位置参数:
        1、必须与声明中的参数个数保持一致,否则会报错
        2、参数的顺序可以不一样,但是不保证结果的正确性,故数据类型也要保持一致
        3、可以通过判断,确定传入参数的合理性,传入的参数类型如果不一致,解释器无法检查,需要在代码中添加判断语句(错了,会显示None)
    关键字参数:
        1、在关键字参数的后面不能跟着位置参数,会直接报语法错误
        2、前面使用了关键字参数,后面一定也要使用关键字参数
        3、位置参数后面是可以使用关键字参数,但是要求与声明的参数位置保持一致
    默认值参数:
        1、调用函数时,如果没有传递参数,则会使用默认参数
        2、声明函数时要指定默认值
        3、使用默认值可以起到避免漏掉参数导致的错误
        4、使用场景:参数比较多,某个参数,一般不会变化,每次调用方法的时候就没有必要去填,如果写的话就按照设定数据来执行
    不定长参数:
        1、需要一个函数能处理比当初声明时更多的参数,这些参数就叫做不定长参数,和上述三种不同,声明时不会命名
        2、使用场景:定义的方法的参数个数是不确定的
        3、加了星号*的变量名会存放所有未命名的变量参数,一般使用*args,args是一个特定数据类型,其中可以放入多个数据
        4、args是一个元组,调用方法是传参数的形式把数据放入元组args中,使用for循环对元组进行遍历取值
        5、如果声明为第一个参数是位置参数,第二个是不定长参数,在调用的时候,我们传递的实际数据,第一个是位置参数,第二个之后的放入不定长参数
        6、如果声明为,第一个参数是不定长参数,第二个是位置参数,在调用的时候,我们直接给位置参数,会报错(第二个变量拿不到),西能通过关键字参数给第二个参数进行传参
        7、在后面自动化测试里面,我们需要记录脚本运行的情况,不同的脚本或用例,他们需要输出的日志内容可能不一样,这时候就需要将日志方法的参数定义为不定长的,用的时候传递什么,就在日志文件中写入什么
'''
# 所有语言中浮点数据,都是不精确的,做是否相等判断时,是不能用==直接判断,可以用差值小于多少误差数
# 变量定义的时候必须同时进行初始化(赋值)


def print_hello(name, sex):
    # 判断sex的值是否为整型,是否是int的一个实例
    if isinstance(sex, int):
        sex_dict = {1: '先生', 2: '女士'}
        print('hello %s %s ,welcome to python world!' %
              (name, sex_dict.get(sex)))


print_hello('王炸', 1)  #hello 王炸 先生 ,welcome to python world!
print_hello(1, '')  #不加判断时输出hello 1 None ,welcome to python world!
print('a' < 'b' < 'c')  #True
print('a' < 'b' and 'b' < 'c')  #True
print('ab' < 'ac')  #True字符串是可以进行大小比较的,'ab'相当于['a','b'],相当于两个列表进行比较大小,按位进行对比
a = (1)
print(type(a))  #<class 'int'>元组中至少有一个逗号(1,)表示元组
#元组、列表是容器类型,里面什么都可以放,字符串、整型数据、列表和元组都可以

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM