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 函数名([参数]): 函数文档字符串 函数体 ...
随机推荐
- 关于Unity的C#基础学习(三)
面向对象 一.编码注意 1.每个C#的脚本只有唯一的一个类是继承自MonoBehaviour 2.类的名字要和我们的文件名字一样 3.代码的缩进 个人习惯:在类的内部来访问数据成员/成员函数的时候,用 ...
- 转载 HTTPS 之fiddler抓包、jmeter请求
转载自 http://suixiang0923.github.io/2016/01/12/%E6%B5%85%E8%B0%88HTTPS%E4%BB%A5%E5%8F%8AFiddler%E6%8A% ...
- iOS越狱系统使用root权限运行命令
//命令原型:sh -c "echo 密码 | su -c 'ls --help' " //转载请注明:http://www.cnblogs.com/bandy/p/7069503 ...
- 如何用MathType编辑出积分符号
MathType由于能够编辑出众多的数学符号而备受理工科学生与老师的喜爱.利用它,你可以在文档中随意编写出你想要的公式.对于从来没有用过公式编辑器的人来说,在文档中看到那些复杂的数学公式时总是会为之惊 ...
- oh my zsh 切换 bash
zsh切换bash bash切换zsh 切换bash chsh -s /bin/bash 切换zsh chsh -s /bin/zsh
- Spring_day03--Spring的事务管理
Spring的事务管理 事务概念 1 什么事务 事务是操作中最基本的单元,表示一组操作要么都成功,有一个失败那么所有都失败. 2 事务特性 原子性 一致性 隔离性 持久性 3 不考虑隔离性产生读问题 ...
- Leetcode: Palindrome Partition I II
题目一, 题目二 思路 1. 第一遍做时就参考别人的, 现在又忘记了 做的时候使用的是二维动态规划, 超时加超内存 2. 只当 string 左部分是回文的时候才有可能减少 cut 3. 一维动规. ...
- STL map 的 key 元素
在做 compiler 语义分析时, 需要用到 map<?,?> 在别人的代码上做扩展, 所以有些代码是不能动的 这时, 需要一个 map<symbol,int> 的数据结构, ...
- 在线制作logo
logoko:http://www.logoko.com.cn/ markmarker:http://emblemmatic.org/markmaker/#/ logomaker:https://lo ...
- SensorManager
光照传感器 Android 中每个传感器的用法其实都比较类似,真的可以说是一通百通了.首先第一步要获取到 SensorManager 的实例 SensorManager senserManager = ...