Python开发基础 day5 函数的定义与使用
#coding:utf-8:
# x='你' # u'hello'# print(x.encode('gbk')) # print(b'\xc4\xe3')# y=b'\xc4\xe3' # print(y.decode('gbk'))# x='你' #unicode.encode('utf-8')y=u'你' print repr(y)
# while True: # msg=input('>>: ') # # # print(len(msg)) # # res=len(msg) # # if res < 5: # # continue # # else:break # # # if len(msg) < 5: # continue # else:break # # with open('a.txt') as f: # for i in f.readlines(): # print(i,end='')# with open('a.txt') as f: # for i in f: # print(i,end='')# with open('a.txt') as f: # print(f.readline(),end='') # print(f.readline(),end='') # print(f.readline(),end='') # print(f.readline(),end='') # print(f.readline(), end='') # print(f.readline(), end='')# with open('a.txt','r',encoding='utf-8') as f: # print(len(f.read()))# with open('a.txt','rb') as f: # file_size=len(f.read())# import os # print(os.path.getsize('a.txt'))
函数参数的使用: # def foo(x): # print(x) # # # foo(1) # foo('a') # foo({'a':2})#形参与实参: # def foo(x,y): #x=1,y=2 # return x+y # # foo(1,2)
#===================================part1 #位置参数:按照从左到右的顺序依次定义的参数
def foo(x,y): print(x) print(y) #按位置定义的形参,必须被传值,多一个不行,少一个也不行# foo(1,2,3)#按位置定义的实参,与形参一一对应 # foo(2,10)
#===================================part2
#关键字参数:实参在定义时,按照key=value形式定义
# def foo(x,y): # print(x) # print(y) # # # foo(y=10,x=1) # foo(y=10,x=1) #关键字参数可以不用像位置实参一样与形参一一对应,指名道姓地传值
def foo(x,y): print(x) print(y)# foo(1,10) # foo(x=1,y=10) # foo(1,y=10) # foo(y=10,1) # foo(x=10,1)# foo(1,x=10,y=20)# def foo(x,y,z): # print(x) # print(y) # print(z) # # foo(1,z=20,10) # foo(1,y=2,z=10)
#注意的问题一:位置实参必须在关键字实参的前面
#注意的问题二:实参的形式既可以用位置实参又可以是关键字实参,但是一个形参不能重复传值
#===================================part3
#默认参数:在定义函数阶段,就已经为形参赋值,定义阶段有值,调用阶段可以不用传值
# def func(x,y=10): # print(x) # print(y)# func(1,20) # func(1)# def func(y=10,x): # print(x) # print(y)
#位置实参
#关键字实参
#位置形参
#默认参数(形参)
#形参的应用:值经常变化的需要定义成位置形参,
# 值大多数情况下都一样,需要定义成默认参数
# def register(name,age,sex='male'): # print(name,age,sex) # # register('alex',1000) # register('wupeiqi',9000) # register('yuanhao',10000) # register('王铁蛋',10000,'female')
#默认参数需要注意的问题一:必须放在位置形参后面
#默认参数需要注意的问题二:默认参数通常要定义成不可变类型
#默认参数需要注意的问题三:默认参数只在定义阶段被赋值一次
# x=10 # def func(name,age=x): # print(name) # print(age) # x=20 # # func('egon')# def func(name,age=10,sex='male',hobby=['play1','play2']): # print(name) # print(age) # print(hobby) # # func('egon')
#===================================part4
#可变长参数:可变长指的是实参的个数不固定
#按位置定义的可变长度的实参:*
#按关键字定义的可变长度的实参:**
# # def func(x,y,*args): #x=1,y=2,args=(3,4,5,6) # print(x,y) # print(args) # # func(1,2,3,4,5,6)# def func(x,y,*args): #args=(3,4,5,6) # print(x,y) # print(args) # # func(1,2,*(3,4,5,6)) #foo(1,2,3,4,5,6)# def func(x,y,z): # print(x,y,z) # # # func(1,*(2,3)) #func(1,2,3) # func(*(2,3)) #func(2,3)# # def func(x,y=2,z=1): # print(x,y,z) # # # func(*('a','b','c')) #func('a','b','c')
# def func(x,y,**kwargs): #x=1,y=2,kwargs={'a':1,'b':3,'z':3} # print(x,y) # print(kwargs) # # func(1,y=2,z=3,a=1,b=3)# def func(x,y,**kwargs): #x=1,y=2,**kwargs=**{'a':1,'b':3,'z':3} # print(x,y) # print(kwargs) # # func(1,y=2,**{'a':1,'b':3,'z':3}) #func(1,y=2,z=3,b=3,a=1)# def func(x,y=1,z=1): # print(x,y,z) # # func(**{'y':2,'x':1,'z':3}) ## def wrapper(*args,**kwargs): #可以接受任意形式,任意长度的参数 # print(args) # print(kwargs) # # # wrapper(1,2,3,3,3,3,3,x=1,y=2,z=3)# # def index(name,group): # print('welcome %s to index page,group is: %s' %(name,group)) # # def wrapper(*args,**kwargs): #可以接受任意形式,任意长度的参数 # # print(args) #args=(1,2,3) # # print(kwargs) #kwargs={'x':1,'y':2,'z':3} # index(*args,**kwargs) #index(*(1,2,3),**{'x':1,'y':2,'z':3}) #index(1,2,3,z=3,y=2,x=1) # # wrapper(name='egon',group='group1')#命名关键字参数:定义在*后的形参,这类形参,必须被传值,而且要求实参必须是以关键字的形式来传值# def register(**kwargs): # print(kwargs) # if 'name' in kwargs: # print(kwargs['name']) # if 'age' in kwargs: # print(kwargs['age']) # # # # register(name='egon',age=18) # register()# def register(*args,name='egon',age): # print(args) # print(name) # print(age) # # # register(name='egon',age=18) # register(1,2,2,3,age=10)# # def register(name,age,*,group,**kwargs): # print(name) # print(age) # print(kwargs) # # # # register('egon',18) # register('egon1',18,hobby='paly1',group='group1')# def func(x,y=1,*args,z,**kwargs): # print(x) # print(y) # print(args) # print(z) # print(kwargs) # # func(1,2,3,4,5,z=10,a=1,b=2)# # def func(x,*args,z=1,**kwargs): # print(x) # print(args) # print(z) # print(kwargs) # # func(1,2,3,4,5,a=1,b=2,c=3)
#形参:位置形参,默认参数,*args,命名关键字参数,**kwargs
函数的返回值:
# y=x**2# def func(x): # return x**2 # y=func(10) # 10**2 # # print(y)# def foo(): # return None # # res=foo() # print(res)# def foo(): # return {'a':1} # # res=foo() # print(res['a'])# def foo(): # return {'a':1},1,'a',[1,2] # # res=foo() # print(res)''' 返回值:可以返回任意类型 没有return:None return value: value return val1,val2,val3 :(val1,val2,val3)return的效果:只能返回一次值,终止函数的执行 ''' def foo(): return 1 print('=====>') return 2 return 3 return 4print(foo())
函数的使用原则:
#函数的使用必须遵循:先定义后使用的原则
#函数的定义,与变量的定义是相似的,如果没有事先定义函数而直接引用
#就相当于在引用一个不存在变量名
# print(x) #NameError # x=1# func # # def func(): # print('hello world')# def func(): # print('hello world') # # # print(func) # func()# def bar(): # print('from bar') # # def foo(): # print('from foo') # bar() # # foo()# #定义阶段 # def foo(): # print('from foo') # bar() # # def bar(): # print('from bar') # # #调用阶段 # foo()#定义阶段:只检测语法,不执行代码 # def func(): # if 1>2 # print('hahahahahahah')def func(): #语法没问题,逻辑有问题,引用一个不存在的变量名 asdfasdfasdfasdfasdf
函数对象:
#函数是第一类对象: 指的是函数可以被当做数据传递def func(): print('from func')#可被引用 # f=func#可以当做函数的参数 # def func(): # print('from func') # def foo(x): # print(x) # x() # # foo(func)#可以当做函数的返回值 # def foo(): # print('from foo') # def bar(): # return foo # f=bar() # print(f) # print(foo)# x=0 # def f1(): # x=1 # def f2(): # # x=2 # print(x) # return f2 # f=f1() # # print(f) # f()#可以当做容器类型的元素 # def select(): # print('select function') # # func_dic={ # 'select':select, # } # # # print(func_dic['select']) # func_dic['select']()# # def select(): # print('select func') # # def delete(): # print('delete func') # # def change(): # print('change func') # # def add(): # print('add func') # # # while 1: # cmd=input('>>: ').strip() # if not cmd:continue # if cmd == 'select': # select() # elif cmd == 'delete': # delete() # elif cmd == 'change': # change() # elif cmd == 'add': # add() # else: # print('无效的命令')def select(cmd_l): filename=cmd_l[-1] pattern=cmd_l[1]with open(filename,'r',encoding='utf-8') as f: for line in f: if pattern in line: print(line)def delete(): print('delete func')def change(): print('change func')def add(): print('add func')def check(): print('check func')func_dic={ 'select':select, 'delete':delete, 'change':change, 'add':add, 'check':check, }while 1: inp=input('>>: ').strip() if not inp:continue cmd_l=inp.split() # print(cmd_l) cmd=cmd_l[0] if cmd in func_dic: func_dic[cmd](cmd_l) else: print('无效的命令')
函数嵌套:
#函数的嵌套调用
# # def max2(x,y): # if x > y: # return x # else: # return y # # def max4(a,b,c,d): # res1=max2(a,b) #23 # res2=max2(res1,c) #23 # res3=max2(res2,d) #31 # return res3 # # # print(max4(11,23,-7,31))
#函数的嵌套定义
def f1(): def f2(): def f3(): print('from f3') print('from f2') f3() print('from f1') f2() # print(f1) f1()''' from f1 from f2 from f3'''
名称空间与作用域:
#名字空间:存放名字与值的绑定关系
#名称空间分为三种
#内置名称空间:python解释器自带的名字,python解释器启动就会生成
#全局名称空间:文件级别定义的名字都会存放与全局名称空间,执行python文件时会产生
# x=1 # def func(): # pass # # class Foo: # pass # # import os # # if 1 > 2 : # y=3#局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时才会生效,函数调用结束则失效 # def func(x,y): #x=1,y=2 # z=3# func(1,2)
#三者的加载顺序:内置名称空间->全局名称空间->局部名称空间
#取值:局部名称空间->全局名称空间->内置名称空间
# # max=10 # def func(): #x=1 # # max=20 # print(max) # # # func()# max=10 # # def func(): #x=1 # max=20 # # print(max) # func() # # # print(max) ## # x=0 # def f1(): # # x=1 # def f2(): # # x=2 # def f3(): # # x=3 # print(x) # f3() # f2() # # f1()
#作用域:作用范围
#全局作用域:内置名称空间与全局名称空间的名字属于全局范围,
# 在整个文件的任意位置都能被引用,全局有效
#局部作用域:局部名称空间的名字属于局部范围,
#只在函数内部可以被引用,局部有效
# x=1 # def foo(): # def f2(): # print(x) # f2() # def bar(): # print(x) # # foo() # bar()# def f1(): # x=1 # def f2(): #f2=value # # x=2 # print(x) # f2() # f1()x=1 def func(): x=2 def f1():pass # print(dir(globals()['__builtins__'])) #全局作用域name # print(locals()) #局部作用域namefunc()print(globals() is locals())#局部作用域----->全局作用域
转载于:https://www.cnblogs.com/bsxq/p/7002996.html
Python开发基础 day5 函数的定义与使用相关推荐
- python中函数的定义实例_Python基础之函数的定义与使用实例
此文实例介绍了Python基础之函数的定义与使用.推荐给大伙学习一下,内容如下: Python 定义函数使用 def 关键字,一般格式如下: def 函数名(参数列表): 函数体 让我们使用函数来输出 ...
- c语言 dict数据类型,Python开发基础之Python常用的数据类型
Python开发基础之Python常用的数据类型 发布时间:2020-08-02 20:07:19 来源:51CTO 阅读:348 作者:warrent 博文大纲 一.Python介绍 二.Pytho ...
- python开发基础戴歆第四章_第一阶段:Python开发基础 day04 课后练习
第一阶段:Python开发基础 day04 课后作业 1.简述python的五大数据类型的作用.定义方式.使用方法 数字类型 字符串类型 列表 字典 布尔型 答:数字类型分为整型(int)和浮点型(f ...
- Python编程基础:函数的使用
Python编程基础:函数的使用 文章目录 Python编程基础:函数的使用 一.前言 二.我的环境 三.函数的定义与调用 四.传递实参 1.位置实参 2.关键字实参 3.默认值 4.可变长度参数 5 ...
- python绘图实例-Python matplotlib基础绘图函数示例
原标题:Python matplotlib基础绘图函数示例 Pyplot基础图标函数: 函数 说明 plt.plot(x,y,fmt,-) 绘制一个坐标图 plt.boxplot(data,notch ...
- python基础之函数嵌套定义
博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏. ...
- python开发基础04-函数、递归、匿名函数、高阶函数、装饰器
匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1):return x+y+z匿名 lambda x,y,z=1:x+y+z #与函数有 ...
- Python开发基础总结之函数+闭包+字典+列表
一.函数的使用: 1.函数的作用域:函数中定义一个变量,如果和全局变量重名,则全局变量名称就会被覆盖,也就是,这里对这个变量的更改,不会更改全局变量.但是,如果直接使用的话,是会使用全局变量的.同时, ...
- python函数定义及调用-python函数基础(函数的定义和调用)
函数的定义 python定义函数使用def关键字 return[表达式]语句用于退出函数,选择性的向调用方返回一个表达式,不带参数值的return语句返回none def函数名(参数列表): 函数体 ...
最新文章
- Python名称空间是什么?
- matlab app designer制作软件_gif制作软件app
- Android开发之APP唤醒小程序,打开小程序,调起小程序以及传参数的实现方法(附加源码)
- MFC中卡拉OK字体的定时器实现,使用DC的DrawText函数实现
- PWN-COMPETITION-HGAME2022-Week1
- python计算球坐标系的积分_python – n球面坐标系到笛卡尔坐标系
- python用途适合做什么生意-PureQuant数字货币量化交易程序化交易python量化开源框架...
- ​无需聚类,杭电学者提出基于软化相似度学习的无监督行人再识别
- 经典Python面试题之数据库和缓存
- Log4net 配置详解
- 服务器网络连接详细信息,Windows10怎么样查看网络连接详细信息
- ArcGIS Server 服务启动停止解决方法
- 关于字符串的输入几种方法
- 计算机安全原理与实践第3版PDF,windows安全原理与技术.pdf
- cmd中cd命令使用
- DirectUI笔记(一)窗口子类化
- GIS空间分析 数字地形分析2 基本地形因子的提取
- 云栖大会人脸识别闸机【技术亮点篇5】--人脸识别闸机采用海康威视摄像头
- vue-cil创建vue项目
- 索尼录音笔怎么导出录音内容_无需录音笔,苹果手机自带3个会议记录神器,没用过有些可惜了...
热门文章
- WebDriver自动化测试框架详解
- Hex与float之间相互转换
- 【IT资讯】编程语言面临重新洗牌,这六种要凉凉
- 【Linux系统编程】POSIX有名信号量
- 闪灯什么意思_车灯闪1下、2下、3下各代表什么意思?关键时刻可以保命
- android 打印机打印html,Android下通过wifi调用打印机打印
- 运维请注意:”非常危险“的Linux命令大全
- 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘
- 每天一道LeetCode-----计算一个直方图空隙的容量(如果装水能装多少)
- liunx命令(13)——df、free