Python脚本的基本格式
完整的python脚本包含以下三个部分:
脚本头
引用部分
业务部分
#coding:utf-8 //脚本头
import os //引用部分
print(123) //业务部分
一、常见头注释
定义coding,告诉系统脚本是何种编码格式:
#coding:utf-8
二、python导入部分
1、导入位置
导入的位置在头注释下边!python程序是自上而下逐行执行的,只有先导入所需模块,我们所编写的业务部分才能正常调用函数
2、导入模块(库)
模块的概念
1、模块也叫库,每个模块中都内置了大量的功能函数、类和变量。它就像是积木,可以根据需要进行调用组合。
2、模块就是程序,每个模块就是一个后缀为.py的Python程序。
3、Python的模块分为标准模块和第三方模块,标准模块就是python内置的,第三方模块则需要安装之后才能使用。
4、可以通过help命令了解一个模块的基本帮助信息,如:help(‘sys’)
导入方法:
1、无论标准模块还是第三方模块都需要导入。
2、导入方法:
- 直接调用模块:
import 模块名
- 从模块中调用某个函数:
from 模块名 import 函数名
import os
,应采用“模块名.方法名
”的形式使用模块中的方法。如:os.system()from os import *
,可以直接使用system()方法,无需加上模块名作为前缀。
三、函数
什么是函数?
所谓函数,就是把具有独立功能的代码
块组织为一个小模块,在需要的时候调用!
函数的使用包含两个步骤:
1、定义函数
2、调用函数
函数的作用:
在开发程序时,使用函数可以提高编写的效率以及代码的重用
1、定义函数
使用关键字def 来定义一个函数,这就是函数定义,而且定义以冒号结尾。
格式:
def 函数名 :
内容
函数名
例如:
def hi():
print("helloworld!!!")
hi()
输出结果:helloworld!!!
2、函数的参数
-
函数是绝大多数编程语言中都支持的一个代码的"构建块",但是Python中的函数与其他语言中的函数还是有很多不太相同的地方,其中一个显著的区别就是Python对函数参数的处理。在Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要像其他语言一样支持函数的重载
-
函数的参数增加函数的通用性,针对相同数据处理逻辑,能够适应更多数据
1、在函数内部,把参数当作变量使用,进行需要的数据处理
2、函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过参数传递
3、形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,用来把数据传递到函数内部
例如:
def say_hello(name):
print("hello,"+name)
name = str(input("请输入您的名字!:"))
say_hello(name)
输出结果:
请输入您的名字!:stray
hello,stray
求两数和
def is_sum(a,b):#这里的a,b为形参
result = a+b
print("%d+%d=%d"%(a,b,result))
is_sum(100,20)#这里的100,20为实参
输出结果:100+20=120
关键字实参:是传递给函数的名称—值对,直接在实参中将名称和值关联起来,因此向函数传递实参时不会混淆.
def message(username,password):
print("username:%s\npassword:%s" %(username,password))
message(username='admin',password='123456')
输出结果:
username:admin
password:123456
3、函数的返回值
函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值 。
返回值
是函数工作完成后,最后给调用者的一个结果- 在函数中使用
return
关键字可以返回结果 - 调用函数一方,可以使用
变量
来接受函数的返回结果!
def full_name(first_name,last_name):
'''返回完整的名字'''
full_name = first_name + ' ' + last_name
return full_name.title()
name = full_name('stray','www')
print(name)
输出结果:Stray Www
让实参变为可选的
def full_name(first_name,last_name=''):
'''返回完整的名字'''
if last_name:
full_name=first_name+last_name
else:
full_name = first_name
return full_name.title()
name = full_name('stray','')
print(name)
name = full_name('stray','one')
print(name)
输出结果:
Stray
Strayone
这里用一个
if
语句来判断last_name
是否存在,通过这样的判断就可以打印出不同的情况,那么此时last_name
就变成了可选参数!
返回字典
函数的返回值可以是任何类型,包括列表和字典等较复杂的数据结构
def login(username,password):
login= {'用户名':username,'密码':password}
return(login)
login_in = login('admin','123456')
print(login_in)
输出结果:
{'用户名': 'admin', '密码': '123456'}
login
接收username
和password
,并将这些值封装到字典中
传递列表
将列表传递给函数后,函数就能直接访问其内容
通过列表传递参数,提高效率
def getuser(names):
for name in names:
print("hello," + name.title())
usernames = ["wnagwu","zhangsna","lisi"]
getuser(usernames)
输出结果:
hello,Wnagwu
hello,Zhangsna
hello,Lisi
传递任意数量的实参
def foods(*food):
print(food)
foods("苹果",'香蕉','梨','桃子')
输出结果:
('苹果', '香蕉', '梨', '桃子')
形参名*food
中的*
让python创建了一个名为food的空元组,并将收到的所有制都封装到这个元组中。
用模块管理函数
对于任何一种编程语言来说,给变量、函数这样的标识符起名字都是一个让人头疼的问题,因为我们会遇到命名冲突这种尴尬的情况。最简单的场景就是在同一个.py文件中定义了两个同名函数,由于Python没有函数重载的概念,那么后面的定义会覆盖之前的定义,也就意味着两个函数同名函数实际上只有一个是存在的。
def foo():
print('hello, world!')
def foo():
print('goodbye, world!')
# 下面的代码会输出什么呢?
foo()
当然上面的这种情况我们很容易就能避免,但是如果项目是由多人协作进行团队开发的时候,团队中可能有多个程序员都定义了名为foo
的函数,那么怎么解决这种命名冲突呢?答案其实很简单,Python中每个文件就代表了一个模块(module),我们在不同的模块中可以有同名的函数,在使用函数的时候我们通过import
关键字导入指定的模块就可以区分到底要使用的是哪个模块中的foo
函数,代码如下所示。
module1.py
def foo():
print('hello, world!')
module2.py
def foo():
print('goodbye, world!')
这种情况我们就可以通过下面的方式来区分到底要使用哪个foo函数
as用来给模块或者函数指定别名,这里是用来给模块指定别名
import module1 as m1
import module2 as m2
m1.foo()
m2.foo()