函数

  计算机中的函数和数学中的函数不是一回事,而是一个subroutine 、子程序、procedures、过程。

  作用:

  1、减少重复代码;

  2、方便修改,更易扩展;

  3、保持代码的一致性。

最简单的一个函数程序:

  def f():                                       #函数名的命名规则与变量的命名规则相同

    print("ok")

  f()                                              #调用的时候一定要记得加括号,因为定义一个函数的时候,如果不加括号

                那它只是一个变量

  def add(a,b)                              #这里的a,b就是形参,下面的7和5是实参,都是一一对应的

    print(a+b)                              在函数没有被调用的时候,它只是被print到了内存里 >>>>>>12

  add(7,5)

  如何实现动态效果呢?

  def f(index):

    print("function %s"% index)

  f(5)                                       >>>>>>function 5    #这就实现了动态输入,index是几就输入几

  这里要强调一下格式化输出:

  f.write("%s end action %s \n"%(time_current,n))

简单的函数代码,避免重复代码的:

def action1 (n):
print("starting action1...")
with open ("日志记录","a") as f:
f.write("end action %s \n"% n) def action2 (n):
print("starting action2...")
with open ("日志记录","a") as f:
f.write("end action %s \n"% n)
def action3 (n):
print("starting action3...")
with open ("日志记录","a") as f:
f.write("end action %s \n"% n)
action1(1)
action2(2)
action3(3)

这个代码就显得用点啰嗦,因为每一个函数里面都包含

with open ("日志记录","a") as f:
f.write("end action %s \n"% n)这样的重复代码,这时就可以将重复的代码写成函数。

import time
def function(n):
time_format="%Y-%m-%d %X" #格式化输出
time_current=time.strftime(time_format) #输出当前的时间
with open ("日志记录","a") as f:
f.write("%s end action %s \n"% (time_current,n)) def action1 (n):
print("starting action1...")
function(n) def action2 (n):
print("starting action2...")
function(n)
def action3 (n):
print("starting action3...")
function(n)
action1(1)
action2(2)
action3(3)

 

效果是一样的,都是新建一个日志记录的文档,在里面输入

函数的相关参数:

  def print_info(name,age):

    print ("Name:%s"% name)

    print("Age:%s"% age)                                        >>>>>>name:menheng

  print_info("mengheng",25)                                                       age:25               #必须参数

  print_info(name="mengheng",age="25")                                                          #关键字参数

不定长参数:

  高大上的加法器:

def add(*args):             #参数前面加个*表示不定长参数,用来存无命名的参数
print(args)
Sum=0
for i in args:
Sum+=i
print(Sum)
add(1,2,3,4,5)

请注意一般正常输入的不定长参数*arg都是以元组的形式输出,而如果在输入一个列表为[1,2,3]

输出的只能是([1,2,3],)为元组的一个元素,如果非要输出(1,2,3),则要在后面引用的f(*[1,2,3])

在括号里面加入*,同理**kwargs则是以字典的形式输出在下面的有命名参数中f(**{"name":"mengheng"})

这样就是传了字典过去。

def print_info(*args,**kwargs):
print(args)
print(kwargs)
print_info(*["alex","","male"],job="IT",hobby="girls",height="") #分为有命名的和没有命名的

>>>>>>('alex', '18', 'male')
            {'job': 'IT', 'hobby': 'girls', 'height': '188'}

  关于不定长的位置:*args放在左边,**kwargs参数放在右边。

  所以函数参数的优先级就是从左到右

  def func (name,age=22,*args,**kwargs)             #从左到右就是关键字参数,默认参数,不定长参数

函数的返回值:

  def f():

    print("ok")

    return 10

  a=f()

  print(a)

>>>>>>ok

10                               #返回值的作用:1、结束函数  2、返回某个对象

  注意点:1、如果函数没有返回值,那它的返回值就是none

      2、如果return多个对象,那么python会帮我们把多个对象封装成一个元组返回。

函数的作用域:

  python使用的LEGB的顺序来查一个符号对应的对象

  locals-->enclosing-->globals-->builtins

  对应的是:局部变量--》闭包空间--》全局变量--》内建模块

      低级----》高级                低级只能看和输出,但是并不能改变高级变量

count=10                            #定义了一个全局变量
def outer():
global count #在改全局变量的时候必须要声明一下
print(count)
count=5
print(count)
outer()

找变量的时候必须是从里到外找(只能看和输出,不能改),不能从外向里找,如果要改就要声明一下。

def outer():
count = 10
def inner():
nonlocal count
print(count)
count=5
print(count)
inner()
print(count)
outer()
>>>>>>10
    5
    5
 

python语法之函数1的更多相关文章

  1. python语法之函数

    函数: 将特定功能代码编写在一个函数里 便于阅读和复用 对一组表达特定功能表达式的封装 使程序模块化 python内置函数: input(),print(),eval()... 函数定义 函数语法格式 ...

  2. python语法join函数

    Python语法中join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. vid = )

  3. python语法基础-函数-内置函数和匿名函数-长期维护

    ##################     内置函数        #######################  """ 一共是 68个内置函数: 反射相关的内置函 ...

  4. python语法------时间函数

    1.导入函数库: import time 获取格式化的时间 你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime(): #!/usr/bin/python # -*- co ...

  5. python语法_函数

    ---恢复内容开始--- 函数: 1 减少重复代码 2 定义一个功能,需要直接调用 3 保持代码一致性 def  funcation_name(参数s): 功能代码块0 参数可以为多个,传入时按照前后 ...

  6. Python语法基础-函数,类以及调试处理

    [TOC] 1. 函数的定义 python中函数有两种: python自带的函数 用户定义函数 返回多个值 原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同 ...

  7. python语法基础-函数-装饰器-长期维护

    ######################################################### # 装饰器 # 装饰器非常重要,面试Python的公司必问, # 原则:开放封闭原则 ...

  8. python语法基础-函数-进阶-长期维护

    ###############    函数的命名空间和作用域    ############## """ # 函数进阶 命名空间和作用域 命名空间 全局命名空间——我们自 ...

  9. Python语法之函数、引用和装饰器

    所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用 函数是带名字的代码块,用于完成具体的工作 需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该 任务 ...

随机推荐

  1. python安装selenium和下载浏览器驱动

    1.安装selenium     方法一:可以用在cmd中用pip命令安装. python默认自带pip工具,如果在电脑上配置了pip的环境变量,打开cmd命令窗口后可以直接输入命令pip insta ...

  2. Golang源码探索(二) 协程的实现原理(转)

    Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱,虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底 ...

  3. bootstrap日期选择

    <input type="text" class="form-control datepicker" style="padding: 0.375 ...

  4. 关于逻辑回归是否线性?sigmoid

    from :https://www.zhihu.com/question/29385169/answer/44177582 逻辑回归的模型引入了sigmoid函数映射,是非线性模型,但本质上又是一个线 ...

  5. session的简单应用

    session的作用:服务器端保存信息. 用户登陆后,服务器端保存了 自定义的key:value 如下: if username == 'xxx' and password == 'xxxx': re ...

  6. pwnable.kr-random-witeup

    看源代码. 可知,在linux下生成个随机数在于输入数异或等于固定值即可,而且吧, 随机数是固定的. 先得出随机数. random=1804289383 OK,接下来用计算器异或就行啦.0xB526F ...

  7. QVariant类

    QVariant类: #include "widget.h" #include <QApplication> #include <QDebug> int m ...

  8. 从零开始学spring cloud(七) -------- Spring Cloud OpenFegin

    一.OpenFegin 介绍 Feign是一个声明性的Web服务客户端. 它使编写Web服务客户端变得更容易. 要使用Feign,请创建一个界面并对其进行注释. 它具有可插入的注释支持,包括Feign ...

  9. sql的日期和时间函数–date_format

    Mysql的日期和时间函数–date_format   DATE_FORMAT(date,format)依照 format 字符串格式化 date 值.下面的修饰符可被用于 format 字符串中:修 ...

  10. 关于HTML5中的sessionStorage的会话级缓存使用

    sessionStorage作为HTML5的Web Storage的两种存储方式之一.    用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数 ...