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 函数名([参数]): 函数文档字符串 函数体 ...
随机推荐
- java----Servlet的生命周期
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...
- Android开发人员必备的10个开发工具
工欲善其事,必先利其器,Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. 1.Eclipse ADT E ...
- 【BZOJ】1005: [HNOI2008]明明的烦恼(prufer编码+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1005 这里讲得挺清楚的:http://www.cnblogs.com/zhj5chengfeng/p ...
- Mac终端运行java程序
1.编辑源文件HelloWorld.java 2.编译源文件 javac HelloWorld.java 生成HelloWorld.class文件 3.执行java字节码 注意,一定要到源目录下,并且 ...
- 剑指 offer set 24 扑克牌的顺子
题目 从扑克牌中任意抽取出 5 张牌, 判断是不是顺子, 并且大小王可以看成任意的数字 思路 1. 把大小王当做 0 插入到数组中, 然后对数组排序 2. 统计相邻两个数之间的空隙数, 若空隙数大于 ...
- leetcode -- Permutations II TODO
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
- 第十五篇:C程序的存储空间布局
前言 C语言程序的执行必定需要耗费一定的资源,也就是说,程序在计算机内部的映像不可能就单单代码. 本文将讲解C语言程序在计算机内部的存在方式. 程序存储空间 1. 正文段:程序的机器指令部分 2. 初 ...
- C#三种字符串拼接方法的效率对比
C#字符串拼接的方法常用的有:StringBuilder.+.string.Format.List<string>.使用情况不同,效率不同. 1.+的方式 string sql = &qu ...
- delay()延迟
jquery的delay()方法: delay() 方法对队列中的下一项的执行设置延迟. 封装方法: $.fn.fadeInWithDelay = function(){ var delay = 0; ...
- PMP 质量管理新7张图
亲和图.关联图.系统图.矩阵图.网络图.pdpc.矩阵数据分析法