Python笔记【6】_函数
#!/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,'女','','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='',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=='':
return 'ieureuejfdj38028jfkjfkjk' #使用return可以进行token的返回
# print('ieureuejfdj38028jfkjfkjk') #使用print只是打印token的值,并不返回
else:
return 'Login Fail' def userInfo(token):
if token=='ieureuejfdj38028jfkjfkjk':
print('查看到订单信息')
else:
print('退出登录') userInfo(login('admin','')) '''四、变量作用域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)
Python笔记【6】_函数的更多相关文章
- Python笔记(六)_函数
函数一般是从第一行代码开始执行,结束于return语句.异常.或者函数所有语句执行完毕.一旦函数将控制权交还给调用者,就意味着全部结束.函数中做的所有工作以及保存在局部变量中的数据都将丢失.再次调用这 ...
- Python笔记(十一)_匿名函数与map()、filter()
匿名函数 无需显式定义函数名,和函数过程,使代码更精简的lambda表达式 函数没有命名,不用担心函数名的冲突 冒号前面代表函数的参数,后面表示计算过程 >>>func=lambda ...
- Python笔记(五)_内置函数BIF
查看所有的内置函数:dir(__builtins__) abs() 获取绝对值 max() 返回给定元素中的最大值 min() 返回给定元素中的最小值 sum() 求和 reverse ...
- python笔记之强制函数以关键字参数传参
最近学习python,学到了函数传参,看到了以下这个特殊情况,特此来做个笔记 def add(*, x, y): print(x, y) 以上函数定义后,该怎么传参?前面的那个*号是做什么用的? 我们 ...
- python笔记-调用eval函数出现invalid syntax错误
本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>& ...
- python笔记六(函数的参数、返回值)
一 调用函数 在写函数之前,我们先尝试调用现有的函数 >>> abs(-9) 9 除此之外,还有我们之前使用的len()等.可以用于数据类型转换的 int() float() str ...
- python笔记:#012#函数
函数基础 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个 ...
- Python笔记-高阶函数
1.函数式编程 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量. 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 传入函数 既然 ...
- python笔记21-内置函数
# print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真# print(any([0,0,0,0,0]))#判断可迭代的对象里面的值是否有一个为真# print(bin(10 ...
- python笔记-正则表达式常用函数
1.re.findall()函数 语法:re.findall(pattern,string,flags=0) --> list(列表) 列出字符串中模式的所有匹配项,并作为一个列表返回.如果无匹 ...
随机推荐
- python 教程 第九章、 类与面向对象
第九章. 类与面向对象 1) 类 基本类/超类/父类被导出类或子类继承. Inheritance继承 Inheritance is based on attribute lookup in Py ...
- 最新用WPF为触摸屏写了一个手写程序,双格输入的
原文:最新用WPF为触摸屏写了一个手写程序,双格输入的 双格输入可以提高手写速度,当前字写完以后可以自动识别提交,写下一个字.这样比单格手写速度提高一倍.特别适合触摸屏程序使用 界面如下: 程序如下: ...
- windows 系统文件 —— 特殊文件及文件类型
0. .mht 文件(MHTML) MHTML文件又称为聚合 HTML 文档.Web 档案或单一文件网页(聚合成单一文件).单个文件网页可将网站的所有元素(包括文本和图形)都保存到单个文件中.这种封装 ...
- 浅谈 Swift 中的 Optionals
input[type="date"].form-control,.input-group-sm>input[type="date"].input-grou ...
- WPF - 本质:数据和行为
原文:WPF - 本质:数据和行为 如果自己来做一个UI框架,我们会首先关注哪些方面?我想UI框架主要处理的一定包括两个主要层次的内容,一个是数据展现,另一个就是数据操作,所以UI框架必须能够接收各种 ...
- .net core config读取
最简单的方式 引用 Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.Json json文件 新建一个Conf ...
- 【转】微信退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道“或”The request was aborted: Could not create SSL/TLS secure channel“的错误
退款测试在我本机测试一切都是正常的,但是发布到了服务器就报这样的一个错啦 但是无论百度或者google或者bing,你能够搜索到的结果都很类似,综合起来就是加这样一些代码,如下 ServicePoin ...
- Android零基础入门第36节:Android系统事件的响应
原文:Android零基础入门第36节:Android系统事件的响应 在开发Android应用时,有时候可能需要让应用程序随系统设置而进行调整,比如判断系统的屏幕方向.判断系统方向的方向导航设备等.除 ...
- MySQL 常用数据存储引擎区别
mysql有多种存储引擎,目前常用的是 MyISAM 和 InnoDB 这两个引擎,除了这两个引擎以为还有许多其他引擎,有官方的,也有一些公司自己研发的.这篇文章主要简单概述一下常用常见的 MySQL ...
- 中国自主X86处理器工艺跃进:国产28nm升级16nm(上海兆芯)
提到X86处理器,世人皆知Intel.AMD,殊不知还有个VIA(威盛),在Intel反垄断世纪大战中VIA公司作为Intel霸权的受害者也最终确认了X86授权,不过VIA与前面两家的实力相差太远,X ...