'''
为什么要有函数?没有函数带来的困扰?
组织结构不清晰,可读性差
代码冗余
可扩展性差 什么是函数
具备某一个功能的工具---》函数 事先准备工具-》函数的定义
拿来就用、重复使用-》函数的调用
ps:先定义后调用 函数的分类:
内置函数:len,max(,),help(函数名)
自定义函数:def
语法:
def 函数名(参数1,参数2,...):
"""注释"""
函数体
return 返回值
       函数名()#就可以调用
'''
 #'函数即是变量'
# def print_tag():
# print('*'*)
#
# def print_msg(): #print_msg=<function print_msg at 0x00000000027EA8C8>
# print('hello world')
#
#
# # print(print_msg)
# # print(print_tag)
#
# print_tag()
# print_msg()
# print_tag() #、定义函数阶段都发生了什么事:只检测语法,不执行代码
#定义阶段
# sex='male'
# def auth():
# sex#引用变量名
#
# name=input('name>>: ').strip()
# password=input('password>>: ').strip()
# if name =='egon' and password == '':
# print('login successfull')
# else:
# print('user or password err')
#
# #调用阶段
# auth() #、函数的使用:先定义后调用 # def bar():
# print('from bar')
#
# def foo():
# print('from foo')
# bar()
#
# foo() # #定义阶段
# def foo():
# print('from foo')
# bar()
#
# def bar():
# print('from bar')
#
# #调用阶段
# foo() # # 定义阶段#这个地方就不行,定义阶段没有bar()
# def foo():
# print('from foo')
# bar()
#
# # 调用
# foo()
#
# def bar():
# print('from bar')
# # 定义函数的三种形式
#第一种:无参函数
#第二种:有参函数#函数体依赖外界传入的值
#第三种:空函数 # def auth():
# name=input('name>>: ').strip()
# password=input('password>>: ').strip()
# if name =='egon' and password == '':
# print('login successfull')
# else:
# print('user or password err')
# # def my_max(x,y):#有参函数
# if x >= y:
# print(x)
# else:
# print(y)
#
# my_max(,) # def auth(name,password):
# if name =='egon' and password == '':
# print('login successfull')
# else:
# print('user or password err')
#
# def interactive():
# name=input('name>>: ').strip()
# password=input('password>>: ').strip()
# auth(name,password)
#
# interactive() #定义空函数
def auth():
pass def put():
pass def get():
pass def ls():
pass
函数返回值
 #return的特点:
#、 函数内可以有多个return,但是只能执行一次return
#、 执行return函数就立刻结束,并且return的后值当做本次调用的结果返回
# def foo(x,y):
# return x+y
#
# res=foo(,)
例:返回值
#res=print('hello')
#print(res)#这个地方输出的是hello和none,print('hello')没有返回值所以是none
#
例:返回值2
# def foo(x,y):
# pass#没有return定义返回值,如果return写上x+y,返回值就是3了
#
# res=foo(,)
#print(res)#上面没有定义返回值所以就是none # def my_max(x,y):
# if x >= y:
# return x
# else:
# return y
#
# res=my_max(,)
# print(res) # def foo():#有多个return,只执行第一个
# print('first')
# return
# print('second')
# return
# print('third')
# return
#
# res=foo()
# print(res) #、返回的值没有类型限制
# def bar():
# print('from bar')
#
# def foo():
# return bar
# print(foo() is bar) #:return返回值的个数
#2.1: 没有return:默认返回None
#2.2:return 值:值本身
#3.3: return 多个值:返回一个元组 # def foo():
# pass
# return ,'a',[,]
# print(foo()) #函数调用的三种形式
def my_max(x,y):
if x >= y:
return x
else:
return y # res1=my_max(,) # res2=my_max(,)* # res3=my_max(my_max(,),)
# print(res3) range(len([,,]))

函数的参数

 #函数的参数分类两种:
#形参:在定义阶段括号内指定的参数,相当于变量名
#实参:在调用阶段括号内传入的值称之为实参,相当于值
#在调用阶段,实参的值会绑定给形参,在调用结束后解除绑定
# def foo(x,y): #x=,y=
# print(x,y)
#
# foo(,) #在python中参数的分类:
#、位置参数:按照从左到右的顺序依次定义的参数
#位置形参:必须被传值,多一个少一个都不行
#位置实参:与形参一一对应传值
# def foo(x,y):
# print(x,y)
#
# foo(,) #、关键字参数:在函数调用时,按照key=value的形式定义的实参
#特点:指名道姓地给形参传值,不再依赖与位置
def foo(name,age,sex):
print(name,age,sex) # foo('egon',,'male')
# foo(sex='male',age=,name='egon',)
#注意:
#、 关键字实参必须在位置实参的后面
#、 不能为同一个参数赋值多次 # foo('egon',sex='male',age=,name='egon') #、默认参数:在函数定义阶段,就已经为形参赋值了
#特点:定义阶段已经有值意味着调用阶段可以不用传值
#位置参数通常用于经常变化的参数,而默认参数指的是大多数情况下都一样的
# def foo(x,y=):
# print(x,y) # foo(,)
# foo(y=,x=)
# foo()
# foo(x=) # def register(name,age,sex='male'):
# print(name,age,sex)
#
# register('egon1',)
# register('egon2',)
# register('egon3',)
# register('alex',,'female') #注意:
#、默认参数必须放到位置形参的后面
# def register(name,sex='male',age,):
# print(name,age,sex)
#、默认参数的值只在定义时被赋值一次
#、默认的参数的值通常应该是不可变类型
# res=
# def foo(x,y=res):
# print(x,y)
#
# res=
# foo('aaaaaaaa') # 可变长参数:在调用函数时,实参值的个数不固定
#实参的形式有:位置实参和关键字实参,
#形参的解决方案:*,** #*args的用法
# def foo(x,y,*z): #z=(,,,) *z相当于*args
# print(x,y)
# print(args)
#
# # foo(,,,,,)
#
# foo(,,*[,,,]) #foo(,,,,,)
# foo(*[,,,,,]) #foo(,,,,,)#实参有*就想成这种格式 # def foo(x,y):
# print(x,y)
#
# foo(*(,)) #foo(,) #**kwargs
# def foo(x,y,**kwargs): #kwargs={'c':,'a':,'b':}
# print(x,y)
# print(kwargs)
#
# # foo(y=,x=,a=,b=,c=)
#
# foo(y=,**{'c':,'x':,'b':,'a':}) #foo(y=,a=,c=,b=) # def foo(name,age):
# print(name,age) # foo(**{'name':'egon','age':})
# foo({'name':'egon','age':}) # def bar(x,y,z):
# print(x,y,z)
#
# def wrapper(*args,**kwargs): #args=(,),kwargs={'z':,'y':}
# # print(args,kwargs)
# bar(*args,**kwargs) #bar(*(,),**{'z':,'y':}) #bar(,z=,y=,)
#
# wrapper(,z=,y=) #命名关键字参数:指的是定义在*后的参数,该参数必须被传值(除非有它有默认值),而且必须按照key=value的形式传值
# def foo(x,y,*args,m=,n):
# print(x,y)
# print(args)
# print(m,n)
#
# foo(,,,n=,)
#
 

Python Third Day-函数的更多相关文章

  1. Python 动态创建函数【转】

    知乎上也有相似的问题 偶然碰到一个问题,初想是通过动态创建Python函数的方式来解决,于是调研了动态创建Python函数的方法. 定义lambda函数 在Python中定义lambda函数的写法很简 ...

  2. python中的函数

    Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

  3. python高级之函数

    python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多 ...

  4. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  5. Python基础三. 函数、lambda、filter、map、reduce

    一.概述 函数, 就是用一些语句组织起来实现一组特定的功能, 用来重复调用. 函数的作用及意义:最大化的重用代码和最小化的代码冗余以及对流程的分解. Python中有哪些函数: 内建的函数 第三方模块 ...

  6. Python 常用string函数

    Python 常用string函数 字符串中字符大小写的变换 1. str.lower()   //小写>>> 'SkatE'.lower()'skate' 2. str.upper ...

  7. python 内置函数和函数装饰器

    python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...

  8. Python 之匿名函数和偏函数

    匿名函数与偏函数 匿名函数 Python允许使用lambda关键字创造匿名函数,lambda表达式用于定义匿名函数,它返回可调用的函数对象,语法如下: lambda arg1, arg2, … : e ...

  9. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

  10. Python中用format函数格式化字符串的用法

    这篇文章主要介绍了Python中用format函数格式化字符串的用法,格式化字符串是Python学习当中的基础知识,本文主要针对Python2.7.x版本,需要的朋友可以参考下   自python2. ...

随机推荐

  1. bzoj1145[CTSC2008]图腾

    传送门 虽然是远古时期的ctsc,但是果然还是ctsc啊 前置芝士:树状数组 这个题最开始的思路很好想,由于之前写过一个类似处理的题,所以这个题我一开始就想到了思路. 首先,我们可以尝试讲图腾表示为x ...

  2. AKOJ-2010-魔法石

    链接:https://oj.ahstu.cc/JudgeOnline/problem.php?id=2010 题意: Vyoung最近收集到一大批魔法石,这些魔法石有两种特性,攻击和防守,不同特性的两 ...

  3. 洛谷1280(dp)

    题目性质:1.当前节点空闲则必须做任务,而不是可选可不选:2.然而前面的如果能覆盖当前节点,就可以不选. 解决方法:倒着扫可以很好地解决这两个问题.dp[i]为时刻i可得的最大空闲时间.如果此刻没有任 ...

  4. 洛谷 P4362 [NOI2002]贪吃的九头龙

    https://www.luogu.org/problemnew/show/P4362 首先有个很显然的dp:ans[i][j][k]表示i节点用j号头,i节点为根的子树中共有k个点用大头时i节点为根 ...

  5. 20180607pip install xxx报错SyntaxError invalid syntax

    用pip安装时都要在cmd命令行里启动的,而在python中无法运行.退出python运行环境就再执行pip可以了.而且最好用管理员身份运行cmdC:\WINDOWS\system32>cd D ...

  6. 阿里云-域名免费申请ssl证书过程

    1.运行证书服务docker docker run --entrypoint="/bin/sh" -it --name certbotsh certbot/certbot:late ...

  7. 关于css中父元素与子元素之间margin-top的问题

    之前在使用经常遇到下面的问题: html: <div class="top"> <div class="one">I'm the fir ...

  8. 实战:liunx定时清理日志脚本

    参考https://blog.csdn.net/qq_39291929/article/details/79054452 1.需求:我们在 /var/log下面有   EmcsYn.log   和   ...

  9. Chess 模拟

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6114 Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋 ...

  10. Java编程基础-运算符

    Java中的运算符大致分为:算术运算符.赋值运算符.关系运算符.逻辑运算符和位运算符五类. (1).算术运算符:+  -  *  /  %  ++  -- (2).赋值运算符:=  +=  -=  * ...