DevOps开发运维
成长之路

Python语法进阶代码

hm_01_引用.py

def test(num):

    print("在函数内部 %d 对应的内存地址是 %d" % (num, id(num)))

    # 1> 定义一个字符串变量
    result = "hello"

    print("函数要返回数据的内存地址是 %d" % id(result))

    # 2> 将字符串变量返回,返回的是数据的引用,而不是数据本身
    return result

# 1. 定义一个数字的变量
a = 10

# 数据的地址本质上就是一个数字
print("a 变量保存数据的内存地址是 %d" % id(a))

# 2. 调用 test 函数,本质上传递的是实参保存数据的引用,而不是实参保存的数据!
# 注意:如果函数有返回值,但是没有定义变量接收
# 程序不会报错,但是无法获得返回结果
r = test(a)

print("%s 的内存地址是 %d" % (r, id(r)))

hm_02_局部变量.py

def demo1():

    # 定义一个局部变量
    # 1> 出生:执行了下方的代码之后,才会被创建
    # 2> 死亡:函数执行完成之后
    num = 10

    print("在demo1函数内部的变量是 %d" % num)


def demo2():

    num = 99

    print("demo2 ==> %d" % num)
    pass

# 在函数内部定义的变量,不能在其他位置使用
# print("%d" % num)

demo1()
demo2()

hm_03_全局变量.py

# 全局变量
num = 10


def demo1():

    print("demo1 ==> %d" % num)


def demo2():

    print("demo2 ==> %d" % num)


demo1()
demo2()

hm_04_函数不能直接修改全局变量.py

# 全局变量
num = 10


def demo1():

    # 希望修改全局变量的值
    # 在 python 中,是不允许直接修改全局变量的值
    # 如果使用赋值语句,会在函数内部,定义一个局部变量
    num = 99

    print("demo1 ==> %d" % num)


def demo2():

    print("demo2 ==> %d" % num)


demo1()
demo2()

hm_05_修改全局变量.py

# 全局变量
num = 10


def demo1():

    # 希望修改全局变量的值 - 使用 global 声明一下变量即可
    # global 关键字会告诉解释器后面的变量是一个全局变量
    # 再使用赋值语句时,就不会创建局部变量
    global num

    num = 99

    print("demo1 ==> %d" % num)


def demo2():

    print("demo2 ==> %d" % num)


demo1()
demo2()

hm_06_全局变量的位置.py

# 注意:在开发时,应该把模块中的所有全局变量
# 定义在所有函数上方,就可以保证所有的函数
# 都能够正常的访问到每一个全局变量了
num = 10
# 再定义一个全局变量
title = "黑马程序员"
# 再定义一个全局变量
name = "小明"


def demo():

    print("%d" % num)
    print("%s" % title)
    print("%s" % name)

# # 再定义一个全局变量
# title = "黑马程序员"

demo()

# # 再定义一个全局变量
# name = "小明"

hm_07_全局变量命名.py

gl_num = 10
# 再定义一个全局变量
gl_title = "黑马程序员"
# 再定义一个全局变量
gl_name = "小明"


def demo():

    # 如果局部变量的名字和全局变量的名字相同
    # pycharm会在局部变量下方显示一个灰色的虚线
    num = 99

    print("%d" % num)
    print("%s" % gl_title)
    print("%s" % gl_name)

# # 再定义一个全局变量
# title = "黑马程序员"

demo()

hm_08_多个返回值.py

def measure():
    """测量温度和湿度"""

    print("测量开始...")
    temp = 39
    wetness = 50
    print("测量结束...")

    # 元组-可以包含多个数据,因此可以使用元组让函数一次返回多个值
    # 如果函数返回的类型是元组,小括号可以省略
    # return (temp, wetness)
    return temp, wetness

# 元组
result = measure()
print(result)

# 需要单独的处理温度或者湿度 - 不方便
print(result[0])
print(result[1])

# 如果函数返回的类型是元组,同时希望单独的处理元组中的元素
# 可以使用多个变量,一次接收函数的返回结果
# 注意:使用多个变量接收结果时,变量的个数应该和元组中元素的个数保持一致
gl_temp, gl_wetness = measure()

print(gl_temp)
print(gl_wetness)

hm_09_交换数字(面试题).py

a = 6
b = 100

# 解法1:-使用其他变量
# c = a
# a = b
# b = c

# 解法2:-不使用其他的变量
# a = a + b
# b = a - b
# a = a - b

# 解法3:-Python 专有
# a, b = (b, a)
# 提示:等号右边是一个元组,只是把小括号省略了
a, b = b, a

print(a)
print(b)

hm_10_不可变和可变的参数.py

def demo(num, num_list):

    print("函数内部的代码")

    # 在函数内部,针对参数使用赋值语句,不会修改到外部的实参变量
    num = 100
    num_list = [1, 2, 3]

    print(num)
    print(num_list)
    print("函数执行完成")


gl_num = 99
gl_list = [4, 5, 6]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)

hm_11_函数内部通过方法修改可变参数.py

def demo(num_list):

    print("函数内部的代码")

    # 使用方法修改列表的内容
    num_list.append(9)

    print(num_list)

    print("函数执行完成")


gl_list = [1, 2, 3]
demo(gl_list)
print(gl_list)

hm_12_加等于(面试题).py

def demo(num, num_list):

    print("函数开始")

    # num = num + num
    num += num

    # 列表变量使用 + =不会做相加再赋值的操作 !
    # num_list = num_list + num_list
    # 本质上是在调用列表的 extend 方法
    num_list += num_list
    # num_list.extend(num_list)

    print(num)
    print(num_list)

    print("函数完成")


gl_num = 9
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)

hm_13_函数的缺省参数.py

gl_list = [6, 3, 9]

# 默认按照升序排序 - 可能会多!
# gl_list.sort()

# 如果需要降序排序,需要执行reverse参数
gl_list.sort(reverse=True)

print(gl_list)

hm_14_函数的缺省参数定义.py

def print_info(name, gender=True):
    """

    :param name: 班上同学的姓名
    :param gender: True 男生 False 女生
    """

    gender_text = "男生"

    if not gender:
        gender_text = "女生"

    print("%s 是 %s" % (name, gender_text))


# 假设班上的同学,男生居多!
# 提示:在指定缺省参数的默认值时,应该使用最常见的值作为默认值!
print_info("小明")
print_info("老王")
print_info("小美", False)

hm_15_缺省参数注意点.py

def print_info(name, title="", gender=True):
    """

    :param title: 职位
    :param name: 班上同学的姓名
    :param gender: True 男生 False 女生
    """

    gender_text = "男生"

    if not gender:
        gender_text = "女生"

    print("[%s]%s 是 %s" % (title, name, gender_text))


# 假设班上的同学,男生居多!
# 提示:在指定缺省参数的默认值时,应该使用最常见的值作为默认值!
print_info("小明")
print_info("老王")
print_info("小美", gender=False)

hm_16_多值参数.py

def demo(num, *nums, **person):

    print(num)
    print(nums)
    print(person)


# demo(1)
demo(1, 2, 3, 4, 5, name="小明", age=18)

hm_17_多值参数求和.py

def sum_numbers(*args):
# def sum_numbers(args):

    num = 0

    print(args)
    # 循环遍历
    for n in args:
        num += n

    return num

result = sum_numbers(1, 2, 3, 4, 5)
# result = sum_numbers((1, 2, 3, 4, 5))
print(result)

hm_18_元组和字典的拆包.py

def demo(*args, **kwargs):

    print(args)
    print(kwargs)


# 元组变量/字典变量
gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}

# demo(gl_nums, gl_dict)

# 拆包语法,简化元组变量/字典变量的传递
demo(*gl_nums, **gl_dict)

demo(1, 2, 3, name="小明", age=18)

hm_19_递归函数的特点.py

def sum_number(num):

    print(num)
    # 递归的出口,当参数满足某个条件时,不再执行函数
    if num == 1:
        return

    # 自己调用自己
    sum_number(num - 1)

sum_number(3)

hm_20_递归求和.py

# 定义一个函数 sum_numbers
# 能够接收一个 num 的整数参数
# 计算 1 + 2 + ... num 的结果


def sum_numbers(num):

    # 1. 出口
    if num == 1:
        return 1

    # 2. 数字的累加 num + (1...num -1)
    # 假设 sum_numbers 能够正确的处理 1...num - 1
    temp = sum_numbers(num - 1)

    # 两个数字的相加
    return num + temp


result = sum_numbers(100)
print(result)
赞(0)

评论 抢沙发

评论前必须登录!

 

LNMP社群 不仅仅是技术

关于我们网站地图