python 变量

python 变量

变量

变量类型

# Python 变量类型
# 变量存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。
# 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
# 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

变量赋值

# Python 中的变量赋值不需要类型声明。
# 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
# 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
# 等号 = 用来给变量赋值。
# 等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。例如:
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
print (counter)
print (miles)
print (name)

多个变量赋值

# Python允许你同时为多个变量赋值。例如:
a = b = c = 1
# 以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
# 您也可以为多个对象指定多个变量。例如:
# 以下实例,两个整型对象 1 和 2 分别分配给变量 a 和 b,字符串对象 "john" 分配给变量 c。
a, b, c = 1, 2, "john"

示例

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/7
def stu(**students):
    print (students)
dict={'001':'libai','002':'luban','003':'houyi'}

# **输入的必须是key-values 一一对应的
#  stu(dict)  这样是错误的
stu(**dict)

#定义dict  会在内存开辟一块空间,然后定义stu的时候,在定义一块空间。在执行 stu(**dict) 时。他会把dict拆分成 001=libai赋值给stu
#这也解释了为什么他不是key-value也会成功,在后面实现的,你看不到而已  ** 就是拆包

def dd(a,b,*c,**d):
    print (a,b,c,d)

dd(1,2)
dd(1,2,3,x=100)
# 一个*代表拆列表,两个代表拆字段


def ke(name,*args):
    if len(args) > 0:
        for i in args:
            print ('{} has learn {}' .format(name,i))
        else:
            print ('you have not clean any ke')
kecheng=['html','mysql','php']
ke('chaochao',*kecheng)

示例

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/8
name='ruirui'
list1=[1,2,3,4,5]
def func1():
    name='lili'
    print (name)
    print (list1)

def func2():
# 如这个例子,列表不需要加global就可以修改,global改的是全局变量。不加global改的事函数内部变量
#全局变量如果是不可变,如果需要进行修改得加global,而可变的则不需要加
    global name
    name+=' so beautiful'
    print (name)
    list1.append(99)
func1()
func2()
func1()

#返回
lili
[1, 2, 3, 4, 5]
ruirui so beautiful
lili
[1, 2, 3, 4, 5, 99]

示例

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/8
name='yueyue'

def func1():
    s='abcd'
    s+='X'
    print (s,name)

def func2():
    global name
    name+=' can play game'
    print (name)
#开辟三块内存,第一块内存存 yueyue  ,func1中引用的是yueyue
#在func2中,引入全局变量,可以对name进行修改了。经过func2之后,变成了 yueyue can play game.并赋值给name
func1()
func2()
func1()

示例

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/8
def func():
    #声明局部变量
    num=100
    list1=[1,5,2,9,6]
    #上面是大儿子,二儿子,下面的三儿子可以对变量进行加工。他们的关系是平行的
    #下面老三对老大和老二进行修改
    def inner_func():
    #下面是可以隐藏的,点击三儿子开始和结束
        for index,i in enumerate(list1):
            list1[index]=i+num
        list1.sort()
    print (list1)
    inner_func()
    print(list1)
    #修改老大
    num+=12
    print (num)

func()
#内部函数三儿子可以改变外部函数可变的变量

示例

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/8
a=100
#开辟两块空间,一块存 a=100,另一块存下面一个函数
def func():
    b=200
#在这里会在上面存函数的基础上,再开一块内存, 记做b=200.  虽然都是整型变量,a是全局,b是局部,后面是有标注的,你看不到、
    def func1():
        global a
        nonlocal b
        c=300
        print (a,b,c)
#尝试修改c的值,因为他是自身,所以不会报错
        c+=100
        print (c)
#尝试修改b的值,因为他是外部函数,所以不能直接修改,需要用nonlocal
        b+=100
        print (b)
#尝试修改a的值,因为他是全局变量,所以必须调用global才能修改
        a+=100
        print (a)
    func1()
func()
#locals 是查看本地变量有哪些,并以字典的形式输出
print (locals())
#global,是查看全局变量有哪些,并以字典的形式输出(注意:里面会有一些系统的键值对)
print (globals())
posted @ 2023-07-13 10:53  liwenchao1995  阅读(7)  评论(0编辑  收藏  举报