Python-语法进阶(1)

1.引用

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)))

2.局部变量

def demo1():
    # 定义一个局部变量
    num = 10
    print("在demo1函数内部的变量时%d" % num)

def demo2():
    num = 99
    print("demo2 ==> %d" % num)
    pass

demo1()
demo2()

3.全局变量

# 全局变量
num = 10


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


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


demo1()
demo2()

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

# 全局变量
num = 10


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


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


demo1()
demo2()

5.修改全局变量

# 全局变量
num = 10

def demo1():
    # 希望修改全局变量的值 - 使用global声明一下变量即可
    # global 关键字会告诉解释器后面的变量是一个全局变量
    # 再使用赋值语句时,就不会创建局部变量
    global num
    num = 99
    print("demo1 ==> %d" % num)


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

demo1()
demo2()

6.全局变量的位置

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

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


def demo():
    print("%d" % num)
    print("%s" % title)
    print("%s" % name)  # 报错:name没有定义


demo()

7.全局变量命名

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


def demo():
    print("%d" % gl_num)
    print("%s" % gl_title)
    print("%s" % name)  # 报错:name没有定义


demo()

8.多个返回值

def measure():
    """测量温度和湿度"""
    print("测量开始。。。")
    temp = 39
    wetness = 100
    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)

9.交换数字(面试题)

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

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

# 解法3: - Python专有
a, b = (b, a)

print(a)
print(b)

10.不可变和可变的参数

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值