Python 函数的使用小结
函数的好处:提高代码复用性,简化代码,代码可扩展。 函数只有调用的时候才会被执行。 1.参数: 形参&实参;
位置参数,属于必填参数;
默认值参数,为非必填参数,没有传值时使用默认值;
关键字参数;
可变参数;
不定长参数; 例1:
# file_name,content 为位置参数,属于必填参数,content1是默认值参数,没有传入值为使用默认值,非必填参数
def write_file(file_name,content,content1 = 'test'): # 形参,形式参数,
f = open(file_name,'a+',encoding='utf-8')
f.seek(0)
f.write(content + '---' +content1 + '\n')
f.close()
write_file('file0.txt','hello world') #向文件'file.txt' 写入 content 为'hello world',以及content1的默认值 'test'
#write_file('file0.txt') # 只传一个会报错,content1是默认值参数可以不传值
write_file('file0.txt','aaa','see you') #实参,实际参数,写入'aaa' 以及'see you'
write_file(file_name='file0.txt',content ='good') # 关键字参数
结果如下:
例2: *args 的使用
def test1(a,b=1,*args): # *args 可变参数, 不一定写*args, 也可以别的,可随意写,但是一般都是写*args
print(a,b,args)
#print(args[0]) # 元祖第一个值,如果函数调用的时候没有传入*args的值,这句话会报错
test1('ttti') #ttti 1 ()
# 位置调用,第一个给a, 第二个给b, 后面的都是*args
test1('nancy',2,'','','') # args 是个元祖 -> args ('123', '456', '789')
#nancy 2 ('123', '456', '789')
#关键字调用,可变参数不能和关键字一起调用,如果可变参数要传值的话要按顺序来传
test1(b=5,a=10)#10 5 ()
t =(1,2,3,4)
test1(*t)
#1 2 (3, 4)
y = [6,7,8]
test1(*y)
#6 7 (8,)
r = {'aa':'','bb':'','cc':''}
test1(*r) #打印的是字典的key,因为字典也无序,所有打印的值会变
#cc aa ('bb',)
例3:**kwargs的使用
def test2(**kwargs):
print(kwargs)
test2() # -> {} 空字典
test2(name = 'hhh',sex = '') # -> {'name': 'hhh', 'sex': '18'}
2. 返回值
如果想获取到函数处理的结果,那么必须return,
如果函数没有写retun的话,返回结果是None,
函数里遇到return,函数立即结束。
def test_1(file_name,content = 'ttt'):
f = open(file_name,'a+',encoding='utf-8')
#return
if content:
f.write(content + '\n')
res = ''
else:
f.seek(0)
res = f.read()
#return res # 写在这的话,如果走else 时,遇到return 函数立即结果,那么文件不会被关闭,因此要放在f.close() 下面
f.close()
return res
#print(res) #函数里的变量外面不能引用
text = test_1('file3.txt')
print(text)
3. 局部变量和全局变量
全局变量的作用域是整个程序,在程序最前面定义,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改。
a = 100 #全局变量
def test():
#global a #如果想要修改全局变量的值,必须要声明一下
print(a)
a = 5 # 局部变量
print(a)
test() # 函数要调用才能使用
这种情况直接print(a) 会报错,UnboundLocalError: local variable 'a' referenced before assignment
变量在使用前必须要先声明。
如果第4行想打印全局变量a =100的值的话,可以使用第3行,记住,使用前先声明。
这样输入的结果为100 和5,第一个输出的是全局变量100,第二个是局部变量5。
4. 递归:自己调用自己
def test1():
num = int(input('please enter a number:'))
if num % 2 ==0: #判断输入的数字是不是偶数
return True
print('不是偶数请重新输入')
return test1() # 如果不是偶数的话继续调用自己,输入值
print(test1()) #调用test1()
Python 函数的使用小结的更多相关文章
- Python开发【第四章】:Python函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...
- python 函数的参数的几种类型
定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...
- 9 - Python函数定义-位置参数-返回值
目录 1 函数介绍 1.1 为什么要使用函数 1.2 Python中的函数 2 函数的基本使用 3 函数的参数 3.1 参数的默认值 3.2 可变参数 3.2.1 可变位置传参 3.2.2 可变关键字 ...
- Python函数中参数类型
在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...
- 第二章----python函数
第一节:调用函数 1.函数是什么? 函数是组织好的,可以重复利用的. 2.为什么要用到函数? 提高应用的模块性,提高重复利用率.指的是:多个文件中可能都要用到该函数,直接拿来调用就行,不用在重复写一个 ...
- python函数基础学习
函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定 义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...
- python函数-------python2.7教程学习【廖雪峰版】(三)
任务: 看完函数这一章 已完成 2017年6月8日16:23:491.函数的作用:写较少的代码实现较多的功能,可以多次被调用.2.可见,借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的 ...
- Python - 函数 - 第十四天
Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...
- 第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲
前面第二章简单介绍了函数定义的语法,经过后面一系列的学习,函数有必要再次介绍一下相关内容. 一. 关于函数的语法 1. 语法 def 函数名([参数]): 函数文档字符串 函数体 ...
随机推荐
- 第二百五十节,Bootstrap项目实战--响应式导航
Bootstrap项目实战--响应式导航 学习要点: 1.响应式导航 一.响应式导航 基本导航组件+响应式 第一步,声明导航区域,设置导航默认样式,设置导航条固定在顶部navbar样式class类,写 ...
- 绑定QQ登录 PHP OAuth详解(转)
越来越多的网站开始采用 第三方账号登录 如qq 微博 开心网 等诸多流行的社交平台,利用第三方账号登录,可以更好地省去用户的注册时间,并且极大地提高用户体验,吸引更多的潜在用户. 让用户拥有 一个号码 ...
- 常用的jQuery前端技巧收集
调试时巧用console.log(),这比用alert()方便多了. jquery易错点:元素拼接的时候,元素还未添加到DOM,就用该预添加元素操作. ajax动态获取的数据,还没有装载html元素, ...
- ChemDraw中化学信息怎么通过Excel搜索
用户可以通过ChemDraw for Excel插件功能在Office Excel中建立ChemOffice菜单将ChemOffice和Excel结合使用,使用电子表格的最大优势之一就是可以清晰查看并 ...
- html转pdf工具:wkhtmltopdf.exe
百度云下载:http://pan.baidu.com/s/1dEX0h93
- js实现二分搜索法
二分搜索法: 也称折半搜索,是一种在有序数组中查找特定元素的搜索算法. 实现步骤: 1. 首先从数组中间开始查找对比,若相等则找到,直接返回中间元素的索引. 2. 若查找值小于中间值,则在小于中间值的 ...
- Axure 8 注册码,市面上很多注册码都不行用,但是这个可以。
找了很久了,感谢@Quan-Sunny的转载 Licensee: University of Science and Technology of China (CLASSROOM) Key: DTXR ...
- onSaveInstanceState
我们已经分析过Activity的启动流程,从中也分析了Activity的生命周期.而其中有一个生命周期方法:onSaveInstanceState方法,今天我们主要讲解一下onSaveInstance ...
- Java连接MongoDB样例
package com.moonlit.example; import com.mongodb.BasicDBObject; import com.mongodb.BulkWriteOperation ...
- 【BZOJ3555】[Ctsc2014]企鹅QQ hash
[BZOJ3555][Ctsc2014]企鹅QQ Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础, ...