函数(def)
一、为什么要使用函数:
面向过程的编程在代码里有很多代码是可以重复利用的,如果使用面向过程编程会使代码显得纷繁复杂,不利于他人和自己日后的阅读。而在函数式编程里,则可以把每个可重复利用的功能封装在一个函数里,当用的时候可以直接调用这个函数,使代码更加的简洁、易读。
二、函数的定义方式:
def f1():
pass
1、def:函数关键字
2、f1:函数名
3、():形式参数(变量的作用)
三、执行函数:
1、方式:f1():
2、函数体执行完毕有return值,赋值给f1(),默认返回值为None。
3、函数在代码里不执行,只有在调用时才执行。
4、f1()代表的实际参数。
四、参数:
函数在传递参数时传递的是变量的引用而非再次创建新的内存。
def f1(a):
a.append(9)
li=[11,22,33,44]
f1(li)
print(li)
1、普通参数:有几个形式参数就传几个实际参数,默认按顺序一 一对应。
def f1(name,age):
print(name)
print(age)
f1("Guido",27)
2、默认参数:可以通过变量的形式指定参数,默认参数要放在参数列表的最后面。
1 def f1(name,age,who="you")
2 print(name,age,who)
3 f1("guido",27) #who="you"
4 f1("guido",27,"she") #who=“she”
3、动态参数:
(1)多接收值的形式参数(*args)输出形式为tuple:
普通输入实际参数:传几个可按顺序接收几个。
输入(*args)的实际参数:会把arges所指向的内容做一个for循环,把每个元素分别传入形式参数。
(2)多接收值的形式参数(**kwargs)输出形式为dict:
实际参数必须有key=value
实际参数f1(**dic)把dic的内容整体以字典的形式传入(**kwargs)中
(3)万能参数:
def f1(*args,**kwargs)
(4)可变长参数:
def f1(a,*b,**c)
def i(kargs, *args, **kwargs):
print(kargs,type(kargs))
print(args,type(args))
print(kwargs,type(kwargs))
i("kdk","111","ppp","uuu",a=1,b=2,c=3)
4、format格式化:
S1="I am {0}, age {1}".format("Guido",27)
print(S1)
S2="I am {0}, age {1}".format(*["alex",18])
print(S2)
S3="I am {name},age {age}".format(age=27,name="Guido")
print(S3)
dic={"name":"Guido","age":27}
S4="I am {name},age {age}".format(**dic)
print(S4)
五、全局变量(所有作用域都可用):
1、函数体本身就是一个作用域,作用域内的变量只有本作用域内才可以使用。
2、局部变量优先在作用域内使用,没有再到全局变量里找到并使用。
3、在作用域内可以对全局变量不可重新赋值,但可以修改。
4、在作用域内若想修改全局变量,必须使用global。
NAME=("Guido")
def f1()
global name
name=("admirers")
print(name)
f1()
print(name)
5、全局变量要是用大写:NAME
六、三元(三目)运算:
三元运算又叫三目运算,其实就是if...else...的简写方式
if 1==1:
name=("Guido")
else:
name=("admirers") 三元运算表达式:
name=("Guido") if 1==1 else name=("admirers")
七、lambda表达式(可描述简单的函数):
def f1(a,b):
return a+100 f2=lambda a,b : a+100
八、实例:
1、登录注册
def login(username,password):
'''
用户登录
username:用户输入用户名
password:用户输入密码
return:True登陆成功
False登录失败
'''
f=open("text","r")
for line in f:
line_list=line.strip().split("@")
if line_list[0]==username and line_list[1]==password:
return True
return False def register(username,password):
'''
用户注册
username:用户名
password:密码
return:None默认
'''
f=open("text","a")
temp=(\n" + username + "@" + password)
f.write(temp)
f.close() def main():
t=input("1:登陆;2:注册")
if t=="":
user=input("请输入用户名:")
pwd=input("请输入密码:)
r=login(user,pwd)
if r:
print("登陆成功")
else:
print("登陆失败")
elif t=="":
user=input("请输入用户名:")
pwd=input(”请输入密码:“)
register(user,pwd)
2、发邮件(武沛齐老师范例)
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr msg = MIMEText('邮件内容', 'plain', 'utf-8')
msg['From'] = formataddr(["武沛齐",'wptawy@126.com'])
msg['To'] = formataddr(["走人",'424662508@qq.com'])
msg['Subject'] = "主题" server = smtplib.SMTP("smtp.126.com", 25)
server.login("wptawy@126.com", "邮箱密码")
server.sendmail('wptawy@126.com', ['424662508@qq.com',], msg.as_string())
server.quit()
函数(def)的更多相关文章
- 函数def
函数:把执行一定功能的动作封装到一起>>> def 函数名(形参) 通过一个 函数名(实参) 去调用它,传参来执行功能.动作,输出结果 .定义:def ...
- python函数def
#函数就是实现一个特定功能的程序块 #下面这个函数实现了打印helloworld的功能 def print_hello(): print('hello world!') #这是调用方法 print_h ...
- python中的函数def和函数的参数
'''函数: 1.减少代码重用性 2.易维护 3.可扩展性强 4.类型function 定义函数: def 函数变量名(): 函数的调用: 1.函数名加括号 2.函数如果没被调用,不会去执行函数内部的 ...
- D14 集合set 函数def
把 字符串 元祖 变成集合的方法 因为列表是可变的所以不能变为集合 # s=set('hello')# print(s)## s=set(['alex','alex','sb'])# print ...
- 11、函数(def)
11.1.函数: 函数即变量 函数的作用域只跟函数声明时定义的作用域有关,跟函数的调用位置无任何关系 1.函数格式: def test(x): ''' 2*x+1 :param x:整形数字 :ret ...
- 定义函数def
- 【python】自定义函数def funName():
- python--lambda和def函数
1.Python lambda和Python def区别分析 Python支持一种有趣的语法,它允许你快速定义单行的最小函数.这些叫做lambda的函数,是从Lisp借用来的,可以用在任何需要函数的地 ...
- 跟着老男孩教育学Python开发【第三篇】:Python函数
set 无序,不重复,可嵌套. 函数 创建函数: 1.def关键字,创建函数 2.函数名 3.() 4.函数体 5.返回值 发邮件函数 def sendmail(): import smtpl ...
- Python学习--05函数
Python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.我们已经知道Python提供了许多内建函数,比如print().但我们 ...
随机推荐
- Java汉诺塔算法
汉诺塔问题[又称河内塔]是印度的一个古老的传说. 据传开天辟地之神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把 ...
- PHP获取不了React Native Fecth参数的解决办法是怎么样呢?
fetch('https://mywebsite.com/endpoint/', { method: 'POST',headers: {'Accept': 'application/json','Co ...
- YTU 3008: 链串的基本运算
3008: 链串的基本运算 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 题目描述 编写一个程序,实现链串的各种基本运算,主函数已给出,请补充每一种方法. 1.建立串s ...
- c++ list, vector, map, set 区别与用法比较
http://blog.csdn.net/alex_xhl/article/details/37692297 List封装了链表,Vector封装了数组, list和vector得最主要的区别在于ve ...
- boost库学习之regex
一.背景 项目中许多地方需要对字符串进行匹配,比如根据指定的过滤字符串来过滤文件名.刚开始是排斥使用boost库的,第一,我不熟悉boost库:第二,如果引入第三方库,就会增加库的依赖,这样的后果是, ...
- 浅谈Apache性能调优
做了很多WEB系统性能测试,都知道了解测试环境,服务器硬件配置,web服务器参数配置是我们开始测试前首先要做的事情. 针对并发数量来说,不同数量级的用户并发,需求的服务器和web服务参数肯定是不同的. ...
- java中|与||,&与&&到底有什么区别呢?
&是位运算符.&&是布尔逻辑运算符.在运行上,&两边的条件都要判断(不管前面的是ture还是false),而&&先判断前面的,若为false,则后面的不 ...
- EasyUI扩展方法
EasyUI扩展方法: 1.我想指定textarea的行,但editor:{type:'textarea', options: {rows:'4'}}这样写不行.请问大家怎么配置才是指定行的啊? 配置 ...
- 样式其他与JS脚本语言
样式其他:display(显示block和隐藏none,不占位置) visibility(显示visible和隐藏hidden,占位置) overflow(超出范围 hidden隐藏) 透明(op ...
- Java开发、网络爬虫、自然语言处理、数据挖掘简介
一.java开发 (1) 应用开发,即Java SE开发,不属于java的优势所在,所以市场占有率很低,前途也不被看好. (2) web开发,即Java Web开发,主要是基于自有或第三方成熟框架的系 ...