1.    定义函数

def   函数名(形参):

    函数体

    return  xxx--------其下面的内容不再执行

---------------------------------------------------------------------------------------------------------------

2.执行函数

  函数名(实参)

---------------------------------------------------------------------------------------------------------------

3.形参,实参(默认按照顺序)

---------------------------------------------------------------------------------------------------------------

4.执行形参传入实参,可不按照顺序

---------------------------------------------------------------------------------------------------------------

5.函数可以有默认参数

---------------------------------------------------------------------------------------------------------------

6.动态参数  
#动态参数一,类型为元祖,传的参数为元祖的元素
def f1(*a):
print (a,type(a))
f1(123,234,[456123789],{1:2})
#动态参数二,类型为字典,传入的参数为字典的键值对
def f1(**a):
print (a,type(a))
f1(k1=123,k2=456)
#万能动态参数-------一*较**在前
def f1(*a,**p):
print (a,type(a),type(p))
f1(123,234,[456123789],{1:2},k1=123,k2=456)
---------------------

((123, 234, [456123789], {1: 2}), <type 'tuple'>)
    ({'k2': 456, 'k1': 123}, <type 'dict'>)
    ((123, 234, [456123789], {1: 2}), <type 'tuple'>, <type 'dict'>)

---------------------------------------------------------------------------------------------------------------

7.为动态参数传入字典,列表

def f1(*args):
print (args,type(args))
l1=[11,22,33,44]
f1(l1)
f1(*l1)
------------------------

 (([11, 22, 33, 44],), <type 'tuple'>)
 ((11, 22, 33, 44), <type 'tuple'>)

------------------------
def f2(**args):
print (args,type(args))
l1={"k1":"123"}
f2(l1=l1)
f2(**l1)
-------------------------

({'l1': {'k1': '123'}}, <type 'dict'>)
   ({'k1': '123'}, <type 'dict'>)

---------------------------------------------------------------------------------------------------------------

8.全局变量,局部变量

P="chushujin"
def func1():
#局部变量
a=123
global P #加上此关键词后,全局变量就会被修改,否则不会被修改
print (a)
P="zhangyu"
def func2():
print (P)
func1()
func2()
----------------------

123
 zhangyu

---------------------------------------------------------------------------------------------------------------

9.lambda表达式

def f1():
return 123
f2=lambda : 123 print f1()
print f2 def f3(a1,a2):
return a1+a2
f4=lambda a1,a2:a1+a2 print f3(1,2)
print f4(2,3)
----------------------

123
    <function <lambda> at 0x00000000026A2BA8>
    3
    5

---------------------------------------------------------------------------------------------------------------

10.文件操作open
打开文件:open("文件名/文件路径",模式,编码)
操作文件
关闭文件
'''
close(),flush(),read(),readline(),seek(),tell(),truncate(),write(),
'''
'''
# f=open("hello.log","r") #默认不写为只读
# data=f.read()
# print data
# f.close() #只读 r---不可写
# f=open("hello.log","r") #默认不写为只读
# data=f.write()-------------报错
# f.close() #只写 w---不可读
# f=open("hello.log","w") #默认只写不可读
# data=f.write("123") #-------------报错
# f.close() #a,追加模式【不可读; 不存在则创建;存在则只追加内容;】
f=open("hello.log","a")
f.write("aaa")
data=f.read()
print data
f.close() #x, 只写模式【不可读;不存在则创建,存在则报错】-----py3
f=open("hello.log","x")
f=open("hello2.log","x")
f.write("aaa")
==================================================================
二进制方式打开:
#二进制的方式打开
#只读
# f=open("hello.log","rb")
# data=f.read()
# print (data)
# print (str(data,encoding="utf-8"))
--------------------------------------

 b'\xe4\xb8\xad\xe5\x9b\xbd'
    中国

--------------------------------------
#只写
# f=open("hello.log","wb")
# f.write(bytes("中国",encoding="utf-8"))
==================================================================
'''
r+:读写【可读,可写】
w+:写读【可读,可写】
x+:写读【可读,可写】
a+:写读【可读,可写】
'''
#r+:打开文件,write:末尾追加内容,指针末尾,如果读取时的指在某一位置,写的时候只会在末尾
#tell():显示指针的位置
#feek(x):调整指针的位置
f=open("hello.log","r+",encoding="utf-8")
print (f.tell()) #指针的位置,一个汉字3个字节
data=f.read(1)
print (f.tell())
print (type(data),data)
print (f.tell())
data=f.read(1)
print (f.tell())
print (type(data),data)
f.seek(3)
print (f.tell())
--------------------------

 0
    3
    <class 'str'> 中
    3
    6
    <class 'str'> 国
    3

--------------------------
# f.write("中国")
# data=f.read()
# print (type(data),data)
f.close()
--------------------------
#a+:写读【可读,可写】:打开的同时指针已经在末尾
f=open("hello.log","a+",encoding="utf-8")
print (f.tell())
f.seek(0)
data=f.read()
print (data)
f.write("QA")
--------------------------
#w+:写读【可读,可写】:先清空,再写之后就可以读了
#只要写入内容,指针调至最后
f=open("hello.log","w+",encoding="utf-8")
data=f.write("我们")
f.seek(0)
data=f.read()
print (data)
f.close()
================================================================
'''
readline():只读取一行
'''
# f=open("hello.log","r+",encoding="utf-8")
# data=f.readline()
# print (data) readlines:读取多行
['第一行','第二行'...]
'''
truncate():截断数据,仅保留指定之前数据
'''
# f=open("hello.log","r+",encoding="utf-8")
# print (f.tell())
# data=f.read()
# print (data)
# f.seek(6)
# f.truncate()
# f.close() f=open("hello.log","r",encoding="utf-8") #f.read() for line in f:
print (line)
==============================================================
'''
关闭:close()相当于with open("xxx","r",encoding="utf-8") as f
自动关闭文件
'''
# with open("hello.log","r",encoding="utf-8") as f:
# # data=f.read()
# # print (data) '''
同时打开两个文件,将第一个文件中的数据一行一行写入第二个文件
with open("源文件","r",encoding="utf-8") as f1,open("新文件","w",encoding="utf-8") as f2:
'''
with open("hello.log","r",encoding="utf-8") as f1,open("hello2.log","w",encoding="utf-8") as f2:
for line in f1:
f2.write(line)
---------------------------------------------------------------------------------------------------------------
11.注册登录函数

def login(username,password):
'''
用于用户名密码的验证
:param username: 用户名
:param password: 密码
:return: True,用户验证成功;False,用户验证失败
'''
with open('db', encoding='utf-8') as f:
ret = []
for i in f:
i = i.strip() # 去除首尾的空格和换行符
m = i.split('$') # 通过指定的分隔符对字符串进行切片
if username == m[0] and password == m[1]:
#print("登录成功")
#break
return True
return False
def register(username,password):
'''
注册用户:
1.打开文件,追加a
2.用户名$密码
:param username:
:param password:
:return:
'''
with open("db","a",encoding="utf-8") as f:
temp="\n"+username+"$"+password
f.write(temp)
return True def user_exist(username):
'''
一行一行的查询,如果用户名存在返回true 不存在返回false
:param username: 用户名
:return: true用户名存在,false用户名不存在
'''
with open('db',"r",encoding="utf-8") as f:
for line in f:
line=line.strip()
line_list=line.split("$")
if line_list[0]==username:
return True
return False def main():
print ("欢迎登录xxxx系统")
inp=input("1:登录,2:注册")
if inp=='1':
user = input("请输入用户名:")
passwd=input("请输入密码:")
is_login=login(user,passwd)
if is_login:
print ("登录成功")
else:
print ("登录失败")
elif inp=='2':
user = input("请输入用户名:")
passwd = input("请输入密码:")
is_exist=user_exist(user)
if is_exist:
print ("用户名已存在,请直接登录")
else:
print ("用户名不存在,请注册")
result=register(user,passwd)
if result:
print ("注册成功")
else:
print ("注册失败") main()

十一、python函数学习的更多相关文章

  1. [python 函数学习篇]默认参数

    python函数: 默认参数: retries= 这种形式 def ask_ok(prompt, retries=, complaint='Yes or no, please!'): while Tr ...

  2. python函数学习的总结

    python函数 part1 函数的作用: 函数以功能(完成一件事)为导向 随调随用减少代码重复性 增强代码可读性 函数的结构: def 函数名(): 函数体 函数的返回值 return:在函数中遇到 ...

  3. python函数学习1

    函数1 (1)定义: def 函数名(参数列表) 函数体 (2)参数传递: 在python中,一切都是对象,类型也属于对象,变量是没有类型的. a = [1,2,3] a = "hellow ...

  4. python函数学习之装饰器

    装饰器 装饰器的本质是一个python函数,它的作用是在不对原函数做任何修改的同时,给函数添加一定的功能.装饰器的返回值也是一个函数对象. 分类: 1.不带参数的装饰器函数: def wrapper( ...

  5. Python函数学习遇到的问题

    Python函数的关键字参数 Python函数独立星号(*)分隔的命名关键字参数 Python函数中的位置参数 Python中对输入的可迭代对象元素排序的sorted函数 Python中函数的参数带星 ...

  6. python函数学习(一)

    1.parse_known_args()和parse_args()函数 该函数为命令行解析函数,调用时需要import argparse(命令行选项.参数和子命令的解析器). 以下内容摘自python ...

  7. Python函数学习——递归

    递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 函数实现过程 def calc(n): v = int(n//2) print(v) if v > ...

  8. Python函数学习——初步认识

    函数使用背景 假设老板让你写一个监控程序,24小时全年无休的监控你们公司网站服务器的系统状况, 当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警, 你掏空了所有的知识量,写出了以下 ...

  9. Python函数学习——作用域与嵌套函数

    全局与局部变量 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数. 当全局变量与局部变量同名时,在定义局部变量的函数内 ...

随机推荐

  1. chrome浏览器截长图的方法

    1.首先打开一个你想要截图的长页面 2.然后按下F12 3.按Ctrl+Shift+P打开console菜单 4.在有个红对勾的位置输入Capture full size screenshot,找到C ...

  2. Kotlin学习(4)Lambda

    Lanbda基础 /* *Lambda允许把代码块当作参数传递给函数 */ fun a(plus:(Int,Int)->Unit){ plus(,) //声明函数的地方,调用代码块,在这里传参 ...

  3. 多线程测试工具groboutils的使用

    一直使用junit做为服务测试框架,感觉不错.最近有人反映在高并发的情况下,存在服务调不到.无奈再次打开单元测试模拟高并发的 情况,却发现junit不支持并发测试      引入groboutils ...

  4. CentOS服务器开放端口

    拿到服务器之后接着之前的通信步骤进行,却发现怎么也连接不上.最后发现是因为服务器端的端口5000没有开放.下面记录一下开放端口的过程. 使用命令 netstat -anp 查看端口开放情况.如果显示命 ...

  5. HTML-美化

    1.美化文本 1.1第一部分 font-size:字体大小,常用em.px.%.rem作单位,预设值small.large.medium,可继承, font-weight:加粗字体,属性为bold,加 ...

  6. js工厂函数创建对象与对象构造函数的理解

    工厂函数,顾名思义,就是通过一个"工厂的加工" 来创建一个对象的函数 //工厂函数 function createPerson(name,sex){ sex = sex == '男' ? '女' : ...

  7. Docker 安装、卸载、启动、停止

    1.1 查看当前系统的内核版本 查看当前系统的内核版本是否高于 3.10 英文文档:https://docs.docker.com/ 中文文档:https://docs.docker-cn.com/  ...

  8. CCPC-Wannafly Winter Camp Day1 流流流动 (树形dp)

    题目描述 喜欢数学的wlswls最近被萎住了. 现在他一共有1...n1...n这么多数字,取数字ii会得到f[i]f[i]的收益.数字之间有些边,对于所有的i(i != 1)i(i!=1),若ii为 ...

  9. Qt学习笔记-Widget布局管理

    Qt学习笔记4-Widget布局管理       以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...

  10. 如何保证Redis与数据库的数据一致性

    一般来说,只要你用到了缓存,不管是Redis还是memcache,就可能会涉及到数据库缓存与数据的一致性问题,这里我们以Redis为例. 我们该如何保证Redis与数据库的一致性呢? So easy: ...