函数 在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. K8s 集群安装(一)

    01,集群环境 三个节点   master node1 node2 IP 192.168.0.81 192.168.0.82 192.168.0.83 环境 centos 7 centos 7 cen ...

  2. Js apply方法与call方法详解 附ES6新写法

    我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...

  3. python之lambda、filter、map、reduce的用法说明(基于python2)

    python中有一些非常有趣的函数,面试的时候可能会遇到.今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,m ...

  4. javascript判断变量是否为空的方法

    javascript判断字符串变量是否为空的方法代码如下<pre> if (typeof(ndesc)=="undefined" || ndesc=='' || nde ...

  5. useEffect传入第二个参数陷入死循环

    最近新项目刚上手,就用了react的hooks,之前也看过hooks的不少文章,只是还没实战实战. 业务场景1:需要在页面一开始时得到一个接口的返回值,取调用另一个接口. 我的思路是,先设置这个接口的 ...

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

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

  7. CF1200D 【White Lines】

    退役快一年了之后又打了场紧张刺激的$CF$(斜眼笑) 然后发现$D$题和题解里的大众做法不太一样 (思路清奇) 题意不再赘述,我们可以看到这个题~~好做~~在只有一次擦除机会,尝试以此为突破口解决问题 ...

  8. FGPA异步信号问题

    FPGA在处理异步信号时,尽量打1~2拍寄存器,否则在线调试会发现各种奇怪问题. 下面是verilog代码 在线调试发现,计数器在跳变 原因是cmd_start由ARM输出,与FPGA时钟异步,需要打 ...

  9. com.fasterxml.jackson.core.JsonGenerationException: Can not write a field name, expecting a value异常

    springboot对象返回,一直报生成json异常,经过检查,发现是自己在做xss防护时对出参进行了json的处理(copy代码不可取,囧) 异常信息 这里进行了出参处理了,但实际上只要对入参处理就 ...

  10. MVC+Ninject+三层架构+代码生成 -- 总结(七、顯示層 一)

    1.顯示層 在網上找的 Bootstrap 模板.