Python笔记【6】

it2022-05-05  72

#!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 ''' def:函数是一段可以重复调用的代码,通过输入参数,返回对应的结果 格式如下: def 函数名(形式参数): 函数体 ''' '''一、定义一个函数''' def add(a,b): pass #不实现函数功能,只是一个占位符 '''二、参数''' #必须参数 def info(name,age,address): print('name={0},age={1},address={2}'.format(name,age,address)) print('name={:s},age={:d},address={:s}'.format(name,age,address)) info('xiaoshao',20,'xian') #必须参数:实际参数和形式参数按照顺序匹配 #关键字参数 def info1(name,age,address): print('name={0},age={1},address={2}'.format(name,age,address)) print('name={:s},age={:d},address={:s}'.format(name,age,address)) info1(age=20,address='xian',name='xiaoshao') #关键字参数:制定形式参数对应的实际参数,可以不用按照顺序进行匹配 def info2(name,age,*,address): #声明函数,参数中*单独出现,*后面的参数必须使用关键字传入 print('name={0},age={1},address={2}'.format(name,age,address)) info2('xiaoshao',20,address='xian') #默认参数 def info3(name,age,address='beijing'): #函数存在默认参数,默认参数不能放在非默认参数之前 print('name={0},age={1},address={2}'.format(name,age,address)) info3('xiaoshao',20) #默认参数:如果没有传递参数,则会使用默认参数 #动态参数,*arg和**kwargs def info4(name,age,*args): #*address数据类型是元组 print('name={0},age={1},args={2}'.format(name,age,args)) info4('xiaoshao',20,'','12345678','shenzhen') #调用时,以元组的形式存放所有未命名的变量参数 info4('xiaoshao',20) #调用时,可变形式参数中没有指明实际参数,即为一个空元组 def info5(name,age,**kwargs): #**address数据类型是字典 print('name={0},age={1},kwargs={2}'.format(name,age,kwargs)) info5('xiaoshao',20,sex='',phone='12345678',address='shenzhen') def info6(*args,**kwargs): print(args,kwargs) info6() info6(12,12.33,'中文',[1,2],(3,4),{'a':1},a=4,b='中文') '''三、return返回值''' '''1、return[表达式]:调用方法返回表达式,不带参数值的return语句时,返回值是None; 2、函数返回值意义:函数/方法返回值是为了给另外一个函数/方法提供一个请求的参数 ''' ''' 接口测试:查看用户信息 1、发送post请求,login请求成功 2、登录成功后,返回token 3、使用token,可以查看用户信息 ''' def login(username,possword): if username== 'admin' and possword=='12345': return 'ieureuejfdj38028jfkjfkjk' #使用return可以进行token的返回 # print('ieureuejfdj38028jfkjfkjk') #使用print只是打印token的值,并不返回 else: return 'Login Fail' def userInfo(token): if token=='ieureuejfdj38028jfkjfkjk': print('查看到订单信息') else: print('退出登录') userInfo(login('admin','12345')) '''四、变量作用域LEGB''' ''' 1、4种变量作用域: Local(局部作用域):在一个函数或者方法内部; Enclosing(闭包函数外的函数中):嵌套函数,在被包裹函数外部并且在包裹函数内部; Global(全局作用域):执行脚本自身的最高层次; Built-in(内建作用域):Python自身保留的特殊名称; 2、LEGB规则:在局部没有找到,去局部外的局部找(闭包),找不到去全局找,再去内建进行搜索,都找不到产生一个NameError; 3、Python中只有模块(module)、类(class)、函数(def、lambda)才引入新的作用域; 4、Python中代码块(if/elif/else、try/except、for/while等)是不会引入新的作用域,即内部定义的变量,外部也可进行访问; ''' '''1、LG--->局部、全局作用域''' a='全局作用域' def f(): print(a) f() a1='全局作用域' def f1(): a1='局部作用域' print(a1) f1() print(a1) '''2、LEG - 局部、闭包与全局作用域''' a2='全局作用域' def f2(): a2='闭包作用域' def f3(): a2='局部作用域' print(a2) f3() print(a2) f2() print(a2) '''3、LEGB - 局部、闭包、全局与内建作用域''' in_var = 'global variable' def len1(in_var): print('called my len() function') l = 0 for i in in_var: l += 1 return l def a_func(in_var): len_in_var = len1(in_var) #a_func()函数在尝试搜索内建(B)命名空间之前,首先会在全局作用域(G)中发现len() print('Input variable is of length', len_in_var) a_func('Hello, World!') '''五、global和nonlocal关键字''' ''' 1、global:当内部作用域想要修改外部作用域时,需要使用global 2、nonlocal:修改嵌套作用域(enclosing 作用域,外层非全局作用域)中变量时,需要使用nonlocal ''' str='我是全局变量' def fun1(): global str #global:局部变量可以修改全局变量 str='我是局部变量' print(str) fun1() print(str) def fun2(): str1='我是闭包变量' def fun3(): nonlocal str1 #修改嵌套作用域中变量时,需要使用nonlocal str1='我是局部变量' print(str1) fun3() print(str1) fun2() '''六、特殊情况''' ''' a=10 def sum(): a=a+1 #sum函数中的a使用的是局部,未定义,无法修改 print(a) sum() #结果:报错 ''' #修改a为全局变量,通过函数参数传递,可以正常执行 a=10 def sum(a): a=a+1 print(a) sum(a)

 

转载于:https://www.cnblogs.com/sjl179947253/p/10281826.html


最新回复(0)