函数的好处:提高代码复用性,简化代码,代码可扩展。

函数只有调用的时候才会被执行。

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 函数的使用小结的更多相关文章

  1. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  2. python 函数的参数的几种类型

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...

  3. 9 - Python函数定义-位置参数-返回值

    目录 1 函数介绍 1.1 为什么要使用函数 1.2 Python中的函数 2 函数的基本使用 3 函数的参数 3.1 参数的默认值 3.2 可变参数 3.2.1 可变位置传参 3.2.2 可变关键字 ...

  4. Python函数中参数类型

    在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...

  5. 第二章----python函数

    第一节:调用函数 1.函数是什么? 函数是组织好的,可以重复利用的. 2.为什么要用到函数? 提高应用的模块性,提高重复利用率.指的是:多个文件中可能都要用到该函数,直接拿来调用就行,不用在重复写一个 ...

  6. python函数基础学习

    函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定  义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...

  7. python函数-------python2.7教程学习【廖雪峰版】(三)

    任务: 看完函数这一章    已完成 2017年6月8日16:23:491.函数的作用:写较少的代码实现较多的功能,可以多次被调用.2.可见,借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的 ...

  8. Python - 函数 - 第十四天

    Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

  9. 第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲

    前面第二章简单介绍了函数定义的语法,经过后面一系列的学习,函数有必要再次介绍一下相关内容. 一.    关于函数的语法 1.    语法 def 函数名([参数]): 函数文档字符串 函数体      ...

随机推荐

  1. yii2 输出json的方法

    public function actionAjax() { if(isset(Yii::$app->request->post('test'))){ $test = "Ajax ...

  2. GitHub搭建个人网站续

    来源:http://www.cnblogs.com/crazyacking/p/4678976.html http://www.cnblogs.com/crazyacking/category/716 ...

  3. 数据库unsigned char*类型图片存进

    loadimage1();测试: void Caccess_test_1Dlg::loadimage1()//存入unsigned char*类型的数据图片 { CFileException e; I ...

  4. SQL语句:语法错误(操作符丢失)在查询表达式中

    所谓操作符丢失,应该是你在拼接SQL语句是少了关键词或者分隔符,导致系统无法识别SQL语句.建议:1.监控SQL语句,看看哪里出现问题:断点看下最后的sql到底是什么样子就知道了,另外你可以把这段sq ...

  5. php7垃圾回收分析

  6. sqlalchemy 判断字段是否存在

    1.low方法: (1)person_obj=session.query(Person).filter(Person.name=='jack') print (person_obj.count()) ...

  7. Git------pull出错解决方法

    1.图片 转载:http://www.2cto.com/os/201404/293183.html

  8. 面试题思考:解释一下什么叫AOP(面向切面编程)

    这种在运行时,动态地将代码切入到类的指定方法.指定位置上的编程思想就是面向切面的编程. AOP是Spring提供的关键特性之一.AOP即面向切面编程,是OOP编程的有效补充. 使用AOP技术,可以将一 ...

  9. GO函数总结(转)

    GO语言函数与C,JAVA等有点很大的区别,大致如下: 一.函数的定义 例如: func max(a, b int) int{//返回a,b里面最大的一个,而且要注意函数的参数和返回值类型是怎么定义的 ...

  10. 【BZOJ2500】幸福的道路 树形DP+RMQ+双指针法

    [BZOJ2500]幸福的道路 Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的 ...