ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python函数基础(三)

2021-09-16 19:02:29  阅读:118  来源: 互联网

标签:10 函数 f1 Python 基础 print 内存地址 id 变量


文章目录(PS:觉得不错请点赞收藏支持一下)

一、引用

1.1 入门

在Python中,值是靠引用来传递来的。

# 用 id() 来判断两个变量是否为同一个值的引用
# 我们可以将 id 值理解为那块的内存地址

"""
1. 如果两个变量的值一样,则两个变量的内存地址一样,变量 a 和 变量 b 引用的是同一个 10
"""
a = 10
b = a

print(id(a))  # 2576104778320
print(id(b))  # 2576104778320

"""
2. 如果两个变量的值不一样,则两个变量的内存地址不一样
"""
n1 = 20
n2 = 30
print(id(20))  # 1588465396624
print(id(30))  # 1588465396944

"""
3. int类型的值是不可变的
"""
m1 = 1
m2 = m1

m1 = 2
print(id(m1))  # 2966472517968
print(id(m2))  # 2966472517936

"""
4. 列表是可变的
"""
a = [10,20,30]
b = a
print(id(a))  # 1804906729216
print(id(b))  # 1804906729216

print('-----修改列表 a 之后---------')
a.append(100)
print(id(a))  # 1804906729216
print(id(b))  # 1804906729216

1.2 引用当作实参

"""
1. 调用 f1 函数时,传递了实参 n, 相当于 a = n,此时变量 a 和 n 引用同一个内存地址
2. 在函数内,通过 a += a, 改变了变量 a 的 值, 所以变量 a 和 n 是不同的内存地址
"""
def f1(a):
    print(a)  # 100
    print(id(a))   # 2255722403280
    a += a  # 200
    print(id(a)) # 2255722406544

n = 100
f1(n)

"""
传列表实参,引用的内存地址是一样的,因为列表是可变的
"""
def f1(a):
    print(a)  # ['a','b']
    print(id(a))   # 2553637375744
    a += a  # ['a','b','a','b']
    print(id(a)) # 2553637375744

n = ['a','b']
f1(n)

二、递归

  • 特点
  1. 函数内部自己调用自己
  2. 必须有出口
  • 举例
"""
学递归前
计算 10 以内整数的累加的和
"""
result = 0
for i in range(1,11):
    result += i
print(result)  # 55

"""
学递归后
计算 10 以内整数的和
"""
def my_sum(n):
    if n == 1:
        return n
    return n + my_sum(n-1)

print(my_sum(10))  # 55

三、任务清单

  1. 利用递归,将列表中的所有是列表类型的元素拆开,添加到一个新列表中,并返回这个新列表。
def f1(list1):
    list2 = []
    for i in list1:
    # isinstance(变量名,类型) 函数, 判断某个变量是否是某个数据类型
        if isinstance(i,list):
            list2.extend(f1(i))
        else:
            list2.append(i)
    return list2
l1 = [10, 'b', 'c', ['d', 50, ['e', 70, [80, 'f']]], ['g', 100]]
res = f1(l1)
print(res) # [10, 'b', 'c', 'd', 50, 'e', 70, 80, 'f', 'g', 100]

CSDN@张浔

标签:10,函数,f1,Python,基础,print,内存地址,id,变量
来源: https://blog.csdn.net/m0_58040147/article/details/120335023

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有