Python笔记

本文详细探讨了Python中列表的不同创建方法及其影响,包括列表元素的内存地址特性。此外,还深入解析了全局变量与局部变量的区别,以及如何正确地在函数内部修改列表和全局变量的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 生成list的不同方法及影响

a=[set()]*5
a[0].add(1)
print a

b=[]
for i in range(5):
	b.append(set())
b[0].add(1)
print b

c=[1]*5
c[0]=2
print c

<<< [set([1]), set([1]), set([1]), set([1]), set([1])]
<<< [set([1]), set([]), set([]), set([]), set([])]
<<< [2, 1, 1, 1, 1]

以上运行结果为 [set([1]), set([1]), set([1]), set([1]), set([1])], [set([1]), set([]), set([]), set([]), set([])],[2, 1, 1, 1, 1]。这是因为list a 中的元素a[0]~a[4]全部指向同一个地址,该地址对应一个空的set,由于set是可以改变值的类型,所以对a[0]对应的set操作就改变了a[0]~a[4]所指向的地址上那个set的值而不改变a[0]所指向的地址,所以访问a[1]~a[4]也会得到set(1)的结果。list b中的元素分别指向不同地址,所以对b[0]对应的set操作不影响b[1]~b[4]所指向的地址上的那些set,b[0]指向的地址不变,该地址上的set变为set(1)。list c中的元素均指向同一个地址,该地址对应整型数1,由于整型数不可以改变值,所以对c[0]赋值操作会改变c[0]指向的地址,c[0]新指向的地址对应整型数2,而c[1]~c[4]指向的地址不变。

2. 全局变量和局部变量

num=1
def f_1():
    #num=2
    num1=num+1
    print num
    print num1
    #global num
    print num
    #num+=4
f_1()
print num

li=[1,2]
def f_2():
    # global li
    # li=[5,8,7]
    li[0]+=1
    li[1]=6
f_2()
print li
全局变量在函数体内可以直接访问,但不能用赋值语句修改,如果使用了赋值语句,如 num=2 和li=[5,8,7],会在函数体内生成一个同名的局部变量,之后函数体内的访问均指向该局部变量。如果想在函数体内修改全局变量的值,可使用global num和global li 来声明之后的访问为全局变量,之后使用赋值语句不会产生局部变量而是修改全局变量。对于上面列表的例子 li 而言,如果f_2()中不声明global li,无法直接在函数体内改变 li 指向的地址,但是通过访问 li 指向的地址,可以改变 li 的元素li[0]和li[1]指向的地址,即带有li[0]和li[1]的赋值语句并不会生成局部变量,而是访问全局变量 li 指向的地址来修改li[0]和li[1]的值,相当于列表具有全局变量的属性,但列表内元素并不具备。

另外函数体的形参相当于函数体内的局部变量,如果和全局变量重名,函数体内就无法访问全局变量,此时如果函数体内使用global语句声明,python会报错:“name 'XXXX' is local and global”,说变量名XXXX在函数体内即是全局变量又是局部变量。

要避免全局变量和局部变量混用,一个好的方法是所有全局变量都用大写字母命名,这样就可以降低因混用而出现错误的可能。



资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值