函数 在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)的更多相关文章

  1. python基础之 初识函数&函数进阶

    函数基础部分 1.什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...

  2. 『Python基础-13』函数 Function

    这篇笔记记录的知识点: 函数的基本概念 自定义函数 函数的几种参数 编程的三种方式: 1.OOP 面向对象编程,万物皆对象,以class为主,抽象化 2.POP 面向过程编程,万事皆过程,def定义过 ...

  3. python之路——初识函数

    阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...

  4. python进阶之魔法函数

    __repr__ Python中这个__repr__函数,对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串.如果我们直接打印一个类,向下面这样 class A():     ...

  5. Python 进阶 之 enumerate()函数

    enumerate()是Python的内置函数,无需依赖包,enumerate()作用是可以将生成器包装成生成器,类似于range,但enumerate()可以自动生成索引. enumerate(pa ...

  6. Python进阶之返回函数

    返回函数 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB"," ...

  7. Python之路【第五篇】python基础 之初识函数(一)和文件管理

    转载请注明出处http://www.cnblogs.com/wupeiqi/articles/5453708.html 函数 一.背景                                 ...

  8. Python进阶1---高阶函数、柯里化

    高阶函数 不相等  自定义sort函数 内建函数--高阶函数 #sort函数 def sort2(lst,key = None,reverse = False): res = [] if key is ...

  9. python进阶之内置函数和语法糖触发魔法方法

    前言 前面已经总结了关键字.运算符与魔法方法的对应关系,下面总结python内置函数对应的魔法方法. 魔法方法 数学计算 abs(args):返回绝对值,调用__abs__; round(args): ...

随机推荐

  1. Swagger简单介绍

    一句话介绍 Swagger Swagger是一个接口文档生成工具,同时提供接口测试调用的辅助功能. 关于 Swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原 ...

  2. 集合类源码(三)Collection之List(CopyOnWriteArrayList, Stack)

    CopyOnWriteArrayList 功能 全名 public class CopyOnWriteArrayList<E> implements List<E>, Rand ...

  3. Phaser铁人三项

    /** * 模拟铁人三项 */ public class PhaserTest { private static Random random = new Random(System.currentTi ...

  4. Prometheus Alertmanager 介绍详解

    Prometheus 之 Alertmanager 介绍详解 告警无疑是监控中非常重要的环节,虽然监控数据可视化了,也非常容易观察到运行状态.但我们很难做到时刻盯着监控,所以程序来帮巡检并自动告警,这 ...

  5. golang 学习笔记 -- struct interface的使用

    一个 interface 类型定义了一个方法集做接口. 区分goalng的方法和函数 func go() { fmt.Println('go to home') } 这是函数 type car str ...

  6. Oracle基础语法 一

    表空间操作 1.创建一个表空间 create tablespace emp(空间名) datafile 'emp.dbf' size 10M autoextend on ;   →表空间名字 /  物 ...

  7. SQL 复制表到另一个表

    SqlServer 复制表结构和表数据 复制表数据到已存在的表 INSERT INTO targetTableName SELECT COLUMNS FROM sourceTableName; 复制表 ...

  8. WPF控件介绍(2)

    上一章讲到了布局.这点就有点类似建筑设计.第一步是出图纸.整体的结构.而第二步就是堆砌, 建筑学里面也会有很多描述, 例如砖头,水泥.玻璃.瓷板.而在WPF中, 这一切的基础也就是控件.用于填充结构的 ...

  9. web的应用模式

    在开发web应用中,有两种模式: 1.前后端分离. 2.前后端不分离. 一.前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果是有后端控制的,由后端渲染页面或重定向,也就是后端需要控制前端的 ...

  10. 浅谈Vue.js2.0核心思想

    Vue.js是一个提供MVVM数据双向绑定的库,专注于UI层面,核心思想是:数据驱动.组件系统. 数据驱动: Vue.js数据观测原理在技术实现上,利用的是ES5Object.defineProper ...