Python大数据基础-05

167 阅读4分钟

函数基础

函数基础知识点

函数格式
1.函数定义的通用格式
def 函数名(形式参数):
\\\\"""
\\\\此处可以加函数的说明文档...
\\\\ :param: 解释参数
\\\\:return: 解释返回值
\\\\ """
\\\\函数体
\\\\return 返回值

2.函数调用的通用格式
注意: 程序的入口是main
if name == 'main':
变量接收返回值 = 函数名(实际参数)

注意事项: (牢记重点)
1.函数必须先定义再调用
2. 函数不调用不执行
3. 函数每调用1次就执行1次
4.函数的参数和返回值根据需求定是否含有
5. 定义时有形参,调用时必须传入对应的实参
6. 定义时有返回值,调用时建议用变量接收
7. 定义时没有return 返回值,默认返回的None
8. 当然定义时也可以手动返回None,此操作没有意义

全局变量和局部变量区别:
全局变量: 在函数内和函数外都可以访问的变量
局部变量: 只能在当前函数内访问的变量
注意: 如何在函数内真正的做到修改全局变量呢? 使用global关键字声明 举例: global 变量名

入门操作示例

# 注意: print是有参数没有返回值的,不需要变量接收返回值
# 如果接收接收的是None
a = print()
print(a)

# 注意: input和len是有参数有返回值的,建议用变量接收返回值
# 方式1:接收后再使用
b = len('abcd')
print(b)

# 方式2:直接输出
print(len('abc'))

无参无返回值的函数:

# 需求: 计算30和40的和
# 先定义函数
def get_sum():
    a = 30
    b = 40
    sum = a + b
    print(sum)


# 再调用函数
# 无参无返回值的弊端: 只能计算固定的两个数的和,并且结果还不能用于其他操作
get_sum()

有参无返回值的函数:

# 需求: 同时计算10和20以及30和40的和
# 先定义函数
def get_sum(a, b):
    sum = a + b
    print(sum)
​
​
# 再调用函数
# 有参数的好处是: 重复调用同一个函数,传入不同参数实现不同结果
get_sum(10, 20)
get_sum(30, 40)

有参有返回值的函数:

# 需求: 同时计算10和20以及30和40的和
# 先定义函数
def get_sum(a, b):
    sum = a + b
    return sum


# 再调用函数
h1 = get_sum(10, 20)
print(h1)
h2 = get_sum(30, 40)
print(h2)

# 有返回值的好处是: 结果可以用于其他操作
# 需求: 10,20,30,40的和
print(h1 + h2)

None和对应类型:

# 定义时没有return 返回值,默认返回的None
def show1():
    print('测试代码1...')


a = show1()  # 先调用show函数,然后把默认的None赋值给a
print(a)  # None
print(type(a))


# 当然定义时也可以手动返回None,此操作没有意义
def show2():
    print('测试代码2...')
    return None


b = show2()  # 先调用show函数,然后把默认的None赋值给a
print(b)  # None
print(type(b))

函数说明文档:

# 需求: 同时计算10和20以及30和40的和
# 先定义函数
def get_sum(a, b):
    """
    这是一个求两个数和的函数
    :param a: 是一个整数
    :param b: 是一个整数
    :return: 返回值是两个数的和
    """
    sum = a + b
    return sum


# 再调用函数
# 注意: 调用的时候,鼠标悬停到函数名上就会看到说明文档内容
h1 = get_sum(10, 20)
print(h1)

函数嵌套调用:

# 先定义函数
def show2():
    print('------show2开始-------')
    print('此处省略1w行代码...')
    print('------show2结束-------')


def show1():
    print('------show1开始-------')
    show2()
    print('------show1结束-------')


def show():
    print('------show开始-------')
    show2()
    print('------show结束-------')
    
    # 再调用函数
# 程序的入口是main
if __name__ == '__main__':
    # print(__name__)
    show1()

全局变量和局部变量:

# 先定义函数
def show1():
    # 局部变量只能在当前函数内部访问
    a = 10
    print(a)
    print(b)


def show2():
    # print(a) # NameError: name 'a' is not defined
    print(b)


# main程序的入口
if __name__ == '__main__':
    # 全局变量
    b = 20
    # 再调用函数
    show1()
    show2()
    # 注意: 局部变量在函数外无法访问
    # print(a) # NameError: name 'a' is not defined
    # 注意: 全局变量在函数内外都能访问
    print(b)

global关键字:

# 先定义函数
def show1():
    # 修改全局变量
    # 注意: 如果在函数内通过 变量名=新值 方式修改全局变量,其实是修改失败的
    # 本质是在当前函数内创建了一个和全局变量名字一样的局部变量而已
    # 如何在函数内真正的做到修改全局变量呢?  使用global关键字声明
    global a
    a = 300
    print(a)


def show2():
    print(a)


if __name__ == '__main__':
    # 全局变量
    a = 200
    # 再调用函数
    show1()
    show2()
    print(a)