Python 第六天

Python 第六天函数 全局变量与局部变量 在编程语言中 由于常常会编写相当长的一段代码或者说海量的代码 在编写完成后 是否如果想要修改某一处 但是编写过程中没有做区分的话就很难找到想要修改的地方 这时候函数的作用就体现出来了 函数在编程中起的作用是将程序的执行语句模块化

大家好,我是讯享网,很高兴认识大家。

函数,全局变量与局部变量

def add(): #Python中定义函数的前缀必须有def(匿名函数除外) print("Hello Word") #函数的语句,函数体 add() #调用函数,调用时不需要加def,程序中的函数在不进行调用的情况下是不会起作用的,需要使用时则用函数名+()的形式进行调用 add()#函数可以重复调用,所以这里再写一个调用也没问题,不过需要注意的是,调用语句必须在被调用函数的后面才能起作用(main情况除外) 

讯享网
函数与传参
讯享网def add(a,b): #在括号内定义了两个变量a,b,此时两个变量都没有赋值 c=a+b #将a,b相加的值赋值给c print(c) #打印c的值 add(2,3) #括号内填写了2和3,调用时按照顺序分别传给a,b,即2给了a,3给了b add(5,6) #再次调用,上次的调用时给a,b传入的值并不会影响本次值的传入(也有例外情况,不过暂时不讨论) 
传参时的一些情况
情况以
def wan(a,b): print(id(a)) #打印a的内存地址,可以发现地址和x一样 a=10 #对a重新赋值 print(id(a)) #打印a的内存地址,可以发现,不一样了 c=a+b print(a,b,c) print(x,y) x=1 print(id(x)) #打印x的内存地址 y=2 wan(x,y) 
情况二
讯享网a=[1,2,3] b=[4,5] def jia01(x,y): print(id(x)) x.append(10) y=[0,5,8] print(y) jia01(a,b) print(id(a)) print(a) def asd(a=[]):#可变参数不建议作为默认参数使用,因为容易造成歧义 a.append('h') #个人理解来讲,其实关键问题在关键字append这里,append的作用是像指定的内存地址中添加内容,所以在这个前提下,两次函数调用都是指向同样的内存地址,而a列表的内存在第一次调用时就添加了内容,并且没有清空,所以当第二次调用时,实质是在第一次的基础上追加信息,从而导致了两次调用后出现的值自然就不一样了 print(a) asd() asd() 
情况三
a=3 #全局变量可以和局部变量重名 def hjk(): # print(a) #给z=5加上注释符,然后这里的注释扶如果去掉,那么显示的结果会是3 # a+=5 a=5 print("wer ",a) hjk() print(a) #函数hjk和函数外都有变量a,然后函数内的变量无法被函数外调用,这种只在部分区域内能使用的变量被称为局部变量,而函数外的变量却可以在函数内被调用,这种整个程序都可被使用的变量被称为全局变量 
情况四
讯享网a=[1,2,3,4] def tgh(): a.append(10) tgh() print(a) def tgh1(): a=[2,3,45] #在函数内,有等号则是重新开辟空间 tgh1() print(a) 
global

global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字。

def hs1(): a=3 def hs2(x,y): z=x+y return z b=4 c=hs2(a,b) return c print(hs1()) def cs1(): global a1 a1=19 cs1() print(a1) b1=3 def cs2(): global b1 b1+=4 print(b1) cs2() print(b1) 
nonlocal

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。


讯享网

讯享网b=3 def hanshu(): a=1 b=12 def han(): nonlocal a nonlocal b a='d' b='c' print("输出a",a) print(b) han() print("输出b",b) hanshu() print(b) 

LEGB
Local 函数或本地的变量和方法名
Enclosed 嵌套函数中,相对于内层函数而言,外层函数的变量和方法名
Global 全局变量和方法名
Built-in Python默认以及内置的变量和方法名

a='allera' b='allerb' c='allerc' def outer(): a='outera' b='outerb' def inner(): a='inner' print('函数inner输出的a的值',a) print('函数inner输出的b的值',b) print('函数inner输出的c的值',c) print(max) inner() outer() 

匿名函数

讯享网def xx(): ln=[] for i in range(4): ln.append(lambda x:x*i)#这里是个匿名函数 return ln a=xx() print(a[0](2)) print(a[1](2)) print(a[2](2)) print(a[3](2)) 

以上代码等于:

def xx(): ln=[] def x1(x): return x*i for i in range(4): ln.append(x1) print(ln) return ln a=xx() print(a[0](2)) print(a[1](2)) print(a[2](2)) print(a[3](2)) 

作业

讯享网# 判断一个数是否是回文数。例如:输入:121,输出也是121,像这样的数就是回文数 # a=input("请输入数字") # # if a==a[::-1]: # print("回文数") # else: # print("不是") # 2.查找字符串中每个字符最后出现的位置。 text = """ 东边来了个喇嘛,西边来了个哑巴,喇嘛手里拎着五斤挞嘛,哑巴腰里别着个喇叭, 别着喇叭的要用喇叭换手里拎着挞嘛的哑巴的挞嘛, 拎着挞嘛的哑巴不愿意用挞嘛换手里拎着喇叭的喇嘛的喇叭。 拎着喇叭的喇嘛用喇叭打了拎着挞嘛的哑巴, 拎着挞嘛的哑巴也用挞嘛打了拎着喇叭的喇嘛。 """ b=set() b.update(text) for i in b: print(i,"最后一次出现在第",text.rfind(i)+1,"位") # 3.‘2018-11-12’去掉‘-’输出 a='2018-11-12' b=a.split('-') print(b) # 4.统计数字,字母,下划线个数 a='123edfyAhjnol' num=0 leter=0 smart=0 byt=0 for i in a: if i.isdigit()==True: num+=1 elif i.isupper()==True: leter+=1 elif i.islower()==True: smart+=1 else: byt+=1 print(num,leter,smart,byt) 
小讯
上一篇 2025-02-05 13:48
下一篇 2025-03-10 07:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/67079.html