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): ...
随机推荐
- 前后台$.post交互并返回JSON对象
1.前台代码: $.post(url,{"blogId":blogId},function(reData){ if(reData.state=="success" ...
- windbg排查线上线程数爆炸问题
1.早上发现有个job的线程数一直居高不下 2.于是dump一个文件拉到本地,查到都在执行 StartInner方法 3.查询代码,此方法是个静态类开启线程的地方,理论上没有任何问题 4.思索了半天, ...
- go-gin-api 路由中间件 - 签名验证(七)
概览 首先同步下项目概况: 上篇文章分享了,路由中间件 - Jaeger 链路追踪(实战篇),文章反响真是出乎意料, 「Go中国」 公众号也转发了,有很多朋友加我好友交流,直呼我大神,其实我哪是什么大 ...
- Windows安装Nginx需要注意的地方
在使用 Nginx 之前,首先要三连问,它是什么?用来做什么?为什么用它? 这篇文章很好的解答了上面的问题,并补充了什么是正向代理和反向代理以及区别的知识 https://www.cnblogs. ...
- Ubuntu无法进入图形化界面(报错/dev/sda1:clean的解决)
进入命令行模式,执行下面的命令: rm -rf /etc/X11/xorg.conf cp /etc/X11/xorg.conf.failsafe /etc/X11/xorg.conf 重启电脑. 上 ...
- Redis 内存管理 源码分析
要想了解redis底层的内存管理是如何进行的,直接看源码绝对是一个很好的选择 下面是我添加了详细注释的源码,需要注意的是,为了便于源码分析,我把redis为了弥补平台差异的那部分代码删了,只需要知道有 ...
- 【leetcode】字母异位词分组
给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...
- CountdownLatch例子
CountdownLatch 一个线程或者多个线程等待其他线程完成了再接着往下执行 public class CountDownLatchTest { ); private static Random ...
- [转帖]linux基础知识大纲
linux基础知识大纲 https://blog.csdn.net/CSDN___LYY/article/details/80810403 1.Linux操作系统概述Linux操作系统的发展过程.创始 ...
- 关于 Task.Run 简单的示例
1. 关于 Task.Run 简单的示例01 直接贴代码了: public static class TaskDemo01 { public static void Run() { Console.W ...