Python进阶-I 初识函数(function)
函数 在java中叫方法。
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。
但你也可以自己创建函数,这被叫做用户自定义函数。
1、补充文件的修改
实际上文件是不能修改的,文件的修改其实是,先备份旧的文件,然后修改备份的文件,接着删除旧文件,将
备份的文件改成旧的文件名,这样看来就像修改的原来的文件一样.
另外还要补充的是,对文件的操作模式中,不建议使用带'+'号的模式,写的时候就专门写,读的时候就专门读!
with open('d:\orders.txt', mode='r', encoding='utf-8') as f1, \
open('d:\orders.txt.bak', mode='w', encoding='utf-8') as f2:
f1_content = f1.read()
f2.write(f1_content.replace('\n new content added', '\n new line'))
# 使用os修改删除旧文件,重命名新文件为旧文件名,必须放在with语句外边,否者报错,文件正在编辑!
import os os.remove('d:\orders.txt')
os.renames('d:\orders.txt.bak', 'd:\orders.txt')
2、函数的定义 def:函数分内置函数和自定义函数,此处就是自定义函数
def func():
print('hello func')
3、函数的调用
func()
4、函数的返回值 return
返回值的3种情况
没有返回值 —— 返回None
不写return
只写return:结束一个函数的继续
return None —— 不常用
返回1个值
可以返回任何数据类型
只要返回就可以接收到
如果在一个程序中有多个return,那么只执行第一个
返回多个值
用多个变量接收:有多少返回值就用多少变量接收
用一个变量接收: 得到的是一个元组
# 1)使用return直接退出函数,函数内,其后面的语句不执行,相当于break
def func_return():
print('func_return')
return # 也可带上None
print('haha')
func_return()
# 2)返回值
def func_return_s():
return [1, 2, 3] print(func_return_s())
5、函数的参数
1)、形参:有位置参数、可变参数(*args)、默认参数、可变关键字参数(**kargs)
2)、实参:按照位置传参、按照关键字传参
def func_have_arg(arg): # 此处的arg就是形式参数,即形参
print('你传入的参数是%s'%arg)
func_have_arg(1) # 此处的1就是实际参数,即实参 def func_have_args(arg1, arg2):
print('你传入的参数是:{0}-{1}'.format(arg1, arg2))
func_have_args('参数1', '参数2') def func_have_variable_args(*args): #可变参数,以元组形式传入函数中
print(args)
func_have_variable_args(1, 2)
func_have_variable_args(1, 2, '参数1', '参数2') def func_have_default_value(arg1, arg2='male'): # 默认参数的顺序在可变参数后
print("含有默认参数的,不输入该参数就使用默认的值,输入就覆盖默认值!{0}-{1}".format(arg1, arg2))
func_have_default_value('性别')
func_have_default_value('性别', 'female') def func_have_keyword_variable_args(**kwargs): #可变关键字参数
print('可变关键字参数是:{0}'.format(kwargs))
func_have_keyword_variable_args(name='tom', ginder="female")
3)、动态传参的另外一种方式
def func_dy(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。
print(args) func_dy(1,2,3,4,5)
l = [1,2,3,4,5]
func_dy(*l) #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散
#func_dy(**l) 可据上推导出关键字可变参数的传参方式
参数
没有参数
定义函数和调用函数时括号里都不写内容
有一个参数
传什么就是什么
有多个参数
位置参数
站在实参的角度上:
按照位置传参
按照关键字传参
混着用可以:但是 必须先按照位置传参,再按照关键字传参数
不能给同一个变量传多个值
站在形参的角度上
位置参数:必须传,且有几个参数就传几个值
默认参数: 可以不传,如果不传就是用默认的参数,如果传了就用传的
只有调用函数的时候
按照位置传 : 直接写参数的值
按照关键字: 关键字 = 值
定义函数的时候:
位置参数 : 直接定义参数
默认参数,关键字参数 :参数名 = '默认的值'
动态参数 : 可以接受任意多个参数
参数名之前加*,习惯参数名args,
参数名之前加**,习惯参数名kwargs
顺序:位置参数,*args,默认参数,**kwargs
动态参数有两种:可以接受任意个参数
*args : 接收的是按照位置传参的值,组织成一个元组
**kwargs: 接受的是按照关键字传参的值,组织成一个字典
args必须在kwargs之前
6、函数的注释
def func_comment(args):
'''
函数注释的演示
:param args: 可变的参数
:return: None
'''
return None
Python进阶-I 初识函数(function)的更多相关文章
- python基础之 初识函数&函数进阶
函数基础部分 1.什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...
- 『Python基础-13』函数 Function
这篇笔记记录的知识点: 函数的基本概念 自定义函数 函数的几种参数 编程的三种方式: 1.OOP 面向对象编程,万物皆对象,以class为主,抽象化 2.POP 面向过程编程,万事皆过程,def定义过 ...
- python之路——初识函数
阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...
- python进阶之魔法函数
__repr__ Python中这个__repr__函数,对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串.如果我们直接打印一个类,向下面这样 class A(): ...
- Python 进阶 之 enumerate()函数
enumerate()是Python的内置函数,无需依赖包,enumerate()作用是可以将生成器包装成生成器,类似于range,但enumerate()可以自动生成索引. enumerate(pa ...
- Python进阶之返回函数
返回函数 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB"," ...
- Python之路【第五篇】python基础 之初识函数(一)和文件管理
转载请注明出处http://www.cnblogs.com/wupeiqi/articles/5453708.html 函数 一.背景 ...
- Python进阶1---高阶函数、柯里化
高阶函数 不相等 自定义sort函数 内建函数--高阶函数 #sort函数 def sort2(lst,key = None,reverse = False): res = [] if key is ...
- python进阶之内置函数和语法糖触发魔法方法
前言 前面已经总结了关键字.运算符与魔法方法的对应关系,下面总结python内置函数对应的魔法方法. 魔法方法 数学计算 abs(args):返回绝对值,调用__abs__; round(args): ...
随机推荐
- K8s 集群安装(一)
01,集群环境 三个节点 master node1 node2 IP 192.168.0.81 192.168.0.82 192.168.0.83 环境 centos 7 centos 7 cen ...
- Js apply方法与call方法详解 附ES6新写法
我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...
- python之lambda、filter、map、reduce的用法说明(基于python2)
python中有一些非常有趣的函数,面试的时候可能会遇到.今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,m ...
- javascript判断变量是否为空的方法
javascript判断字符串变量是否为空的方法代码如下<pre> if (typeof(ndesc)=="undefined" || ndesc=='' || nde ...
- useEffect传入第二个参数陷入死循环
最近新项目刚上手,就用了react的hooks,之前也看过hooks的不少文章,只是还没实战实战. 业务场景1:需要在页面一开始时得到一个接口的返回值,取调用另一个接口. 我的思路是,先设置这个接口的 ...
- 集合类源码(三)Collection之List(CopyOnWriteArrayList, Stack)
CopyOnWriteArrayList 功能 全名 public class CopyOnWriteArrayList<E> implements List<E>, Rand ...
- CF1200D 【White Lines】
退役快一年了之后又打了场紧张刺激的$CF$(斜眼笑) 然后发现$D$题和题解里的大众做法不太一样 (思路清奇) 题意不再赘述,我们可以看到这个题~~好做~~在只有一次擦除机会,尝试以此为突破口解决问题 ...
- FGPA异步信号问题
FPGA在处理异步信号时,尽量打1~2拍寄存器,否则在线调试会发现各种奇怪问题. 下面是verilog代码 在线调试发现,计数器在跳变 原因是cmd_start由ARM输出,与FPGA时钟异步,需要打 ...
- com.fasterxml.jackson.core.JsonGenerationException: Can not write a field name, expecting a value异常
springboot对象返回,一直报生成json异常,经过检查,发现是自己在做xss防护时对出参进行了json的处理(copy代码不可取,囧) 异常信息 这里进行了出参处理了,但实际上只要对入参处理就 ...
- MVC+Ninject+三层架构+代码生成 -- 总结(七、顯示層 一)
1.顯示層 在網上找的 Bootstrap 模板.