溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

我要學(xué)python之python語法及規(guī)范

發(fā)布時間:2020-03-31 04:43:47 來源:網(wǎng)絡(luò) 閱讀:321 作者:刺激樂天派 欄目:編程語言

注釋

單行注釋: #
多行注釋:
"""
寫入注釋內(nèi)容
"""
'''
寫入多行注釋內(nèi)容
'''

備注:python中單引號和雙引號作用是一致的。

變量

python的命名規(guī)則與java或者C#命名規(guī)則是類似的,如下

變量命名規(guī)則:
1.變量名只能是字母、數(shù)字、下劃線的任意組合
2.不能數(shù)字開頭
3.關(guān)鍵字不能聲明為變量

關(guān)鍵字

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
這些關(guān)鍵字可以進(jìn)入交互模式下,然后引入keyword模塊,輸出keyword.kwlist

import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

隨著python的發(fā)展可能會改變,所以最新的關(guān)鍵字列表就用這種方式查看比較好。

輸入

備注:在3.x后的版本和2.6之前的版本,有很多不同,所以在你操作時,先確認(rèn)好版本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 2.x版本
name = raw_input("請輸入用戶名:")

#3.x版本
name2 = input("請輸入用戶名:")

#2.7和2.6屬于過度版本,同時可以兼容上面兩種寫法,
#但我覺得3.x才是未來,所以你可以不管以前的

#打印輸出名字

#2.x版本
print name

#3.x版本
print(name2)

流程控制

if...else
if...elif...else
while...
while...else
for...
for...else

這些流程控制上的我要覺得有點(diǎn)意思的是:
while...else
for...else
先來說結(jié)果:else塊代碼只有在while和for正常執(zhí)行完成才會執(zhí)行,如果break則不會執(zhí)行。

比如現(xiàn)在我們來寫個小程序,要求如下:
題目: 寫一個python程序,實(shí)現(xiàn)猜數(shù)字值的功能,讓用戶輸入一個數(shù)字,如果猜對了則輸出bingo!如果猜錯了,提示輸入的數(shù)字相比目標(biāo)數(shù)字更大還是更小,但最多使用3次機(jī)會。
下面我使用while演示一下簡單邏輯:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#預(yù)設(shè)猜數(shù)值
realnumber = 35
#猜測數(shù)字次數(shù)
times = 3

#循環(huán)進(jìn)行程序輸入判斷
while times > 0:
    target = int(input("請輸入數(shù)字:"))
    #判斷是否與目標(biāo)數(shù)值相等
    if target == realnumber:
        print("bingo!")
        break
    elif target > realnumber:
        print("輸入的值比目標(biāo)值大!")
    else:
        print("輸入數(shù)值比目標(biāo)數(shù)值小!")
    times -= 1
else:
    print("三次機(jī)會已經(jīng)用完!")

基本數(shù)據(jù)類型

int \ long\ float\complex\布爾值\字符串\列表\元祖\字典

1.數(shù)值類型

int(整型):取值-231~231-1
long (長整型):-263~263-1
float(浮點(diǎn)型):處理實(shí)數(shù),類似于c的double類型,8字節(jié)
complex(復(fù)數(shù)):一般形式:x+yj,x,y都是實(shí)數(shù)
備注:python中存在小數(shù)字池:-5 ~ 257, 類似于系統(tǒng)自帶的常量池

2.布爾值

真和假(1和0)

3.字符串
與java類似的

4.列表

比如說:
namelist = ['a','b','c']
或者
namelist = list(['a','b','c'])
跟java、c#比,類似List
基本操作有:自行查閱相關(guān)文檔

5.元祖

ages = (11,12,23,24)
或者
ages = tuple((11,12,23,24))
基本操作有:自行查閱相關(guān)文檔
備注:
a.當(dāng)定義一個單元素元組時,后面必須跟一個逗號,否則拋異常。
b.元祖中的元素不可修改,否則報(bào):TypeError: 'tuple' object does not support item assignment

6.字典

person = {"name": "ckmike", "age": 23, "sex": "男"}
或者
person = dict({"name": "ckmike", "age": 23, "sex": "男"})
跟java、c#相比,類似于Map,它也是無序的
常用操作:自行查閱相關(guān)文檔

7.set集合
set是一個無序且不重復(fù)的元素集合

keys = set({1,2,3,4})
keys.add(2)
keys.add(5)
print(keys)

8.隊(duì)列(Queue)
隊(duì)列分雙向隊(duì)列(deque)和單向隊(duì)列(Queue)。

class deque(object):
    """
    deque([iterable[, maxlen]]) --> deque object

    Build an ordered collection with optimized access from its endpoints.
    """
    def append(self, *args, **kwargs): # real signature unknown
        """ Add an element to the right side of the deque. """
        pass

    def appendleft(self, *args, **kwargs): # real signature unknown
        """ Add an element to the left side of the deque. """
        pass

    def clear(self, *args, **kwargs): # real signature unknown
        """ Remove all elements from the deque. """
        pass

    def count(self, value): # real signature unknown; restored from __doc__
        """ D.count(value) -> integer -- return number of occurrences of value """
        return 0

    def extend(self, *args, **kwargs): # real signature unknown
        """ Extend the right side of the deque with elements from the iterable """
        pass

    def extendleft(self, *args, **kwargs): # real signature unknown
        """ Extend the left side of the deque with elements from the iterable """
        pass

    def pop(self, *args, **kwargs): # real signature unknown
        """ Remove and return the rightmost element. """
        pass

    def popleft(self, *args, **kwargs): # real signature unknown
        """ Remove and return the leftmost element. """
        pass

    def remove(self, value): # real signature unknown; restored from __doc__
        """ D.remove(value) -- remove first occurrence of value. """
        pass

    def reverse(self): # real signature unknown; restored from __doc__
        """ D.reverse() -- reverse *IN PLACE* """
        pass

    def rotate(self, *args, **kwargs): # real signature unknown
        """ Rotate the deque n steps to the right (default n=1).  If n is negative, rotates left. """
        pass

    def __copy__(self, *args, **kwargs): # real signature unknown
        """ Return a shallow copy of a deque. """
        pass

    def __delitem__(self, y): # real signature unknown; restored from __doc__
        """ x.__delitem__(y) <==> del x[y] """
        pass

    def __eq__(self, y): # real signature unknown; restored from __doc__
        """ x.__eq__(y) <==> x==y """
        pass

    def __getattribute__(self, name): # real signature unknown; restored from __doc__
        """ x.__getattribute__('name') <==> x.name """
        pass

    def __getitem__(self, y): # real signature unknown; restored from __doc__
        """ x.__getitem__(y) <==> x[y] """
        pass

    def __ge__(self, y): # real signature unknown; restored from __doc__
        """ x.__ge__(y) <==> x>=y """
        pass

    def __gt__(self, y): # real signature unknown; restored from __doc__
        """ x.__gt__(y) <==> x>y """
        pass

    def __iadd__(self, y): # real signature unknown; restored from __doc__
        """ x.__iadd__(y) <==> x+=y """
        pass

    def __init__(self, iterable=(), maxlen=None): # known case of _collections.deque.__init__
        """
        deque([iterable[, maxlen]]) --> deque object

        Build an ordered collection with optimized access from its endpoints.
        # (copied from class doc)
        """
        pass

    def __iter__(self): # real signature unknown; restored from __doc__
        """ x.__iter__() <==> iter(x) """
        pass

    def __len__(self): # real signature unknown; restored from __doc__
        """ x.__len__() <==> len(x) """
        pass

    def __le__(self, y): # real signature unknown; restored from __doc__
        """ x.__le__(y) <==> x<=y """
        pass

    def __lt__(self, y): # real signature unknown; restored from __doc__
        """ x.__lt__(y) <==> x<y """
        pass

    @staticmethod # known case of __new__
    def __new__(S, *more): # real signature unknown; restored from __doc__
        """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
        pass

    def __ne__(self, y): # real signature unknown; restored from __doc__
        """ x.__ne__(y) <==> x!=y """
        pass

    def __reduce__(self, *args, **kwargs): # real signature unknown
        """ Return state information for pickling. """
        pass

    def __repr__(self): # real signature unknown; restored from __doc__
        """ x.__repr__() <==> repr(x) """
        pass

    def __reversed__(self): # real signature unknown; restored from __doc__
        """ D.__reversed__() -- return a reverse iterator over the deque """
        pass

    def __setitem__(self, i, y): # real signature unknown; restored from __doc__
        """ x.__setitem__(i, y) <==> x[i]=y """
        pass

    def __sizeof__(self): # real signature unknown; restored from __doc__
        """ D.__sizeof__() -- size of D in memory, in bytes """
        pass

    maxlen = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    """maximum size of a deque or None if unbounded"""

    __hash__ = None

單向隊(duì)列

class Queue:
    """Create a queue object with a given maximum size.

    If maxsize is <= 0, the queue size is infinite.
    """
    def __init__(self, maxsize=0):
        self.maxsize = maxsize
        self._init(maxsize)
        # mutex must be held whenever the queue is mutating.  All methods
        # that acquire mutex must release it before returning.  mutex
        # is shared between the three conditions, so acquiring and
        # releasing the conditions also acquires and releases mutex.
        self.mutex = _threading.Lock()
        # Notify not_empty whenever an item is added to the queue; a
        # thread waiting to get is notified then.
        self.not_empty = _threading.Condition(self.mutex)
        # Notify not_full whenever an item is removed from the queue;
        # a thread waiting to put is notified then.
        self.not_full = _threading.Condition(self.mutex)
        # Notify all_tasks_done whenever the number of unfinished tasks
        # drops to zero; thread waiting to join() is notified to resume
        self.all_tasks_done = _threading.Condition(self.mutex)
        self.unfinished_tasks = 0

    def task_done(self):
        """Indicate that a formerly enqueued task is complete.

        Used by Queue consumer threads.  For each get() used to fetch a task,
        a subsequent call to task_done() tells the queue that the processing
        on the task is complete.

        If a join() is currently blocking, it will resume when all items
        have been processed (meaning that a task_done() call was received
        for every item that had been put() into the queue).

        Raises a ValueError if called more times than there were items
        placed in the queue.
        """
        self.all_tasks_done.acquire()
        try:
            unfinished = self.unfinished_tasks - 1
            if unfinished <= 0:
                if unfinished < 0:
                    raise ValueError('task_done() called too many times')
                self.all_tasks_done.notify_all()
            self.unfinished_tasks = unfinished
        finally:
            self.all_tasks_done.release()

    def join(self):
        """Blocks until all items in the Queue have been gotten and processed.

        The count of unfinished tasks goes up whenever an item is added to the
        queue. The count goes down whenever a consumer thread calls task_done()
        to indicate the item was retrieved and all work on it is complete.

        When the count of unfinished tasks drops to zero, join() unblocks.
        """
        self.all_tasks_done.acquire()
        try:
            while self.unfinished_tasks:
                self.all_tasks_done.wait()
        finally:
            self.all_tasks_done.release()

    def qsize(self):
        """Return the approximate size of the queue (not reliable!)."""
        self.mutex.acquire()
        n = self._qsize()
        self.mutex.release()
        return n

    def empty(self):
        """Return True if the queue is empty, False otherwise (not reliable!)."""
        self.mutex.acquire()
        n = not self._qsize()
        self.mutex.release()
        return n

    def full(self):
        """Return True if the queue is full, False otherwise (not reliable!)."""
        self.mutex.acquire()
        n = 0 < self.maxsize == self._qsize()
        self.mutex.release()
        return n

    def put(self, item, block=True, timeout=None):
        """Put an item into the queue.

        If optional args 'block' is true and 'timeout' is None (the default),
        block if necessary until a free slot is available. If 'timeout' is
        a non-negative number, it blocks at most 'timeout' seconds and raises
        the Full exception if no free slot was available within that time.
        Otherwise ('block' is false), put an item on the queue if a free slot
        is immediately available, else raise the Full exception ('timeout'
        is ignored in that case).
        """
        self.not_full.acquire()
        try:
            if self.maxsize > 0:
                if not block:
                    if self._qsize() == self.maxsize:
                        raise Full
                elif timeout is None:
                    while self._qsize() == self.maxsize:
                        self.not_full.wait()
                elif timeout < 0:
                    raise ValueError("'timeout' must be a non-negative number")
                else:
                    endtime = _time() + timeout
                    while self._qsize() == self.maxsize:
                        remaining = endtime - _time()
                        if remaining <= 0.0:
                            raise Full
                        self.not_full.wait(remaining)
            self._put(item)
            self.unfinished_tasks += 1
            self.not_empty.notify()
        finally:
            self.not_full.release()

    def put_nowait(self, item):
        """Put an item into the queue without blocking.

        Only enqueue the item if a free slot is immediately available.
        Otherwise raise the Full exception.
        """
        return self.put(item, False)

    def get(self, block=True, timeout=None):
        """Remove and return an item from the queue.

        If optional args 'block' is true and 'timeout' is None (the default),
        block if necessary until an item is available. If 'timeout' is
        a non-negative number, it blocks at most 'timeout' seconds and raises
        the Empty exception if no item was available within that time.
        Otherwise ('block' is false), return an item if one is immediately
        available, else raise the Empty exception ('timeout' is ignored
        in that case).
        """
        self.not_empty.acquire()
        try:
            if not block:
                if not self._qsize():
                    raise Empty
            elif timeout is None:
                while not self._qsize():
                    self.not_empty.wait()
            elif timeout < 0:
                raise ValueError("'timeout' must be a non-negative number")
            else:
                endtime = _time() + timeout
                while not self._qsize():
                    remaining = endtime - _time()
                    if remaining <= 0.0:
                        raise Empty
                    self.not_empty.wait(remaining)
            item = self._get()
            self.not_full.notify()
            return item
        finally:
            self.not_empty.release()

    def get_nowait(self):
        """Remove and return an item from the queue without blocking.

        Only get an item if one is immediately available. Otherwise
        raise the Empty exception.
        """
        return self.get(False)

    # Override these methods to implement other queue organizations
    # (e.g. stack or priority queue).
    # These will only be called with appropriate locks held

    # Initialize the queue representation
    def _init(self, maxsize):
        self.queue = deque()

    def _qsize(self, len=len):
        return len(self.queue)

    # Put a new item in the queue
    def _put(self, item):
        self.queue.append(item)

    # Get an item from the queue
    def _get(self):
        return self.queue.popleft()

運(yùn)算符

  1. 算數(shù)運(yùn)算符:
    包括: 加減乘除(+ - * /),**(冪),// 取商的整數(shù)部分,%取余數(shù)

  2. 比較運(yùn)算符:
    包括: ==, != , <> , > , < ,>=, <=

  3. 賦值運(yùn)算符:
    = 簡單賦值
    += 加法賦值運(yùn)算,下面的依次類推
    =
    /=
    =
    %=
    //=

  4. 邏輯運(yùn)算符:
    and 與
    or 或
    not 非

  5. 成員運(yùn)算符:
    in 判斷指定序列中是否包含指定值
    not in

  6. 身份運(yùn)算符:
    is 判斷兩個標(biāo)識是否引用自一個對象
    is not

  7. 位運(yùn)算符:
    位運(yùn)算與java、c#等語言都是一樣的

8.三元運(yùn)算

result = 值1 if 條件 else 值2

備注:這些運(yùn)算符的優(yōu)先級,我不在這里進(jìn)行書寫,感興趣的可自行查閱運(yùn)算符優(yōu)先級。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI