python教程17-全局变量和局部变量、多个返回值、函数的回顾、函数的缺省参数

python教程_小白入门17/2020/9/6

学习目标
python教程17-全局变量和局部变量、多个返回值、函数的回顾、函数的缺省参数_第1张图片

P113 全局变量和局部变量

a = 100  # 这个变量是全局变量,在整个py文件里都可以访问
word = 'hello'


def test():
    '''
    这个函数就是用来讲局部变量和全局变量的
    :return:
    '''
    a = 10
    # 1. 在函数内部又定义了一个新的局部变量
    #  可以理解为a 先赋值了 100,但是进入函数后有让a = 10,后来的赋值覆盖了原来的赋值
    # 这个变量是在函数内部定义的变量,它是局部变量,只能在函数内部使用
    print('函数内部a = {}'.format(a))

    # 想在函数内部修改全局变量,使用global
    x = 'hello'
    global word
    word = 'ko'
    print('函数内部word = {}'.format(word))
    # 使用内置函数来查看局部变量locals()和全局变量global()
    print('locals = {},global = {}'.format(locals(), globals()))


test()

print('函数外部 a = {}'.format(a))
print('函数外部 word = {}'.format(word))
# 没写global之前
# 函数内部a = 10
# 函数内部word = ko
# 函数外部 a = 100
# 函数外部 word = hello

# 写了global之后
# 函数内部a = 10
# 函数内部word = ko
# 函数外部 a = 100
# 函数外部 word = ko

# 函数内部a = 10
# 函数内部word = ko
# locals = {'a': 10, 'x': 'hello'},global = {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000025075A1CB88>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'E:/PyCharm/code/20200728/demo.py', '__cached__': None, 'a': 100, 'word': 'ko', 'test': }
# 函数外部 a = 100
# 函数外部 word = ko

# 在python里,只有函数能够分隔作用域,作用域,变量起作用的区域
if 3> 2:
    m = 'hi'
print(m)

print(globals())
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001330467CB88>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'E:/PyCharm/code/20200728/demo.py', '__cached__': None, 'a': 100, 'word': 'ko', 'test': , 'm': 'hi'}
# 所以尽量少使用 全局变量

P114 多个返回值

# 函数的多个返回值
def test(a, b):
    x = a // b
    y = a % b
    # 一般情况下,一个函数只会执行一个return语句
    # 特殊情况下(fainally语句下),一个函数可能会执行多个return语句
    # return 语句表示一个函数的结束
    return x, y  # (2,3)  ------最常用元组
    # return x, y  # [2,3]
    # return {'x': x, 'y': y}  # {'x': 2, 'y': 3}


result = test(13, 5)
print('商是{},余数是{}'.format(result[0], result[1]))

shang, yushu = test(16, 3)
print('商是{},余数是{}'.format(shang, yushu))

P115 函数的回顾

#  函数的回顾总结
#  函数的声明,使用关键字def 来声明一个函数
#  函数的格式  def 函数名(形参1,形参2,。。。。)
#  函数的调用   函数名(实参1.实参2。。。。)
#  函数的返回值  使用return 语句返回 函数的执行结果
#  函数返回多个值,将多个数据打包成一个整体返回
#          可以使用列表和字典,通常情况下使用元组

# 函数名也是一个标识符
# 标识符,由数字,字母和下划线组成,不能以数字开头,严格区分大小写,不能使用关键字
#  遵守命名规范,使用下划线连接,做到顾名思义

def get_sum(a, b):
    '''
    获取到和
    :param a:
    :param b:
    :return:
    '''
    # 函数的执行逻辑,要和函数的名字一致
    return a + b


def print_sum(a, b):
    print(a + b)
    # 可以不需要 返回值


x = get_sum(1, 3)
print(x)        # 4

def calc(a,b):
    shang = a//b
    yushu = a%b
    return shang,yushu

m,n = calc(15,4)
print(m,n)      # 3 3

P116 函数的缺省参数

def say_hello(name, age=55, city='南京'):  # 形参city设置了一个默认值
    #  缺省参数要放在最后
    print('my name is {},my age is {},I\'m come from {}'.format(name, age, city))


say_hello('jack', 22, 'jinan')  # my name is jack,my age is 22,I'm come from jinan
say_hello('tom', 15)  # my name is tom,my age is 15,I'm come from 南京
# 如果有位置参数和关键字参数,关键字一定要放在位置参数的后边,意思就是带等号的放后边
say_hello('jerry', age=99, city='深圳')  # my name is jerry,my age is 99,I'm come from 深圳
say_hello('huoyuanjia')     # my name is huoyuanjia,my age is 55,I'm come from 南京

#  若传入的参数 少于 函数要求的参数,且没有设置默认值,会报错,因为函数需要的参数和传进去的参数 不一致
#  say_hello() missing 1 required positional argument: 'city'
#  有些函数的参数是,如果传递了参数,就使用传递的参数,如果没有传递参数,就使用默认的值

# print函数里的end就是一个缺省参数
# print('hello world','xiyouji',sep="*********")      # hello world*********xiyouji

#

你可能感兴趣的:(python基础教程学习手记,python)