Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
avascript是一門弱類型語言,意思就是語言中的數(shù)據(jù)類型,很輕易就能被改變
比如定義一個(gè)變量值為數(shù)字,然后重新給他賦值為字符串,類型就由數(shù)字類型轉(zhuǎn)為了字符串類型。
類型的轉(zhuǎn)換,可以有很多種方法,例如在js中常用的parseInt、toString、等方法,這些方法都是強(qiáng)制將某個(gè)類型轉(zhuǎn)為指定的類型。
除了這些方法,還有一些特殊應(yīng)用場景,會(huì)將類型悄悄的進(jìn)行轉(zhuǎn)換,如下幾種情況:
如果一個(gè)數(shù)字跟另一個(gè)其他類型的數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算時(shí),另一個(gè)數(shù)據(jù)會(huì)被轉(zhuǎn)為數(shù)字類型進(jìn)行運(yùn)算,例:
var a = 1;
var b = true;
var c = a + b;
console.log(c); // 2 - 此時(shí)的布爾類型true被轉(zhuǎn)為了數(shù)字1,進(jìn)行了數(shù)學(xué)加法運(yùn)算
var a = 3;
var b = undefined;
var c = a + b;
console.log(c); // NaN - 此時(shí)的b被轉(zhuǎn)為了數(shù)字類型進(jìn)行了數(shù)學(xué)運(yùn)算
注意:加法比較特殊,因?yàn)榉?/span>+,除了可以進(jìn)行數(shù)學(xué)加法以外,還可以進(jìn)行字符串的拼接。例:
var a = 2;
var b = [1,2,3]
var c = a / b;
console.log(c); // NaN - 此時(shí)的b被轉(zhuǎn)為了數(shù)字類型
?
var a = 2;
var b = [1,2,3]
var c = a + b;
console.log(c); // 21,2,3 - 此時(shí)的a和b不再是加法運(yùn)算,而是進(jìn)行了拼接
當(dāng)+符號左右兩邊有一個(gè)是字符串的時(shí)候,另一個(gè)也會(huì)轉(zhuǎn)為字符串進(jìn)行拼接,例:
var a = 2;
var b = '3';
var c = a + b;
console.log(c); // 23 - 此時(shí)的a被轉(zhuǎn)為了字符串,進(jìn)行了拼接
當(dāng)比較運(yùn)算符(除相等比較和全等比較)左右兩邊有一個(gè)是數(shù)字的時(shí)候,另一個(gè)也會(huì)轉(zhuǎn)為數(shù)字進(jìn)行比較大小,例:
var a = 2;
var b = '10';
console.log(a>b) // false - 說明b被轉(zhuǎn)為數(shù)字10進(jìn)行了大小比較
所有被放在if分支語句的小括號中的代碼會(huì)被轉(zhuǎn)為布爾類型,例:
var a = 2;
if(a){
console.log('a變量是true'); // a變量是true - 說明變量a的2被轉(zhuǎn)為了布爾值true
}else{
console.log('a變量是false');
}
?
var b;
if(b){
console.log('b變量是true');
}else{
console.log('b變量是false'); // b變量是false - 說明b變量undefined被轉(zhuǎn)為了布爾值false
}
我們知道,new 一個(gè)構(gòu)造函數(shù)會(huì)得到一個(gè)對象,但是new Date()之后,輸出的卻是一個(gè)字符串,例:
var d = new Date();
console.log(d); // Mon Mar 15 2021 17:50:25 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
// 這說明,new出來的對象d,在輸出的時(shí)候被悄悄的轉(zhuǎn)換成了字符串輸出了
當(dāng)在控制臺輸出一個(gè)數(shù)組或?qū)ο蟮臅r(shí)候,是本省的類型顯示,例:
var arr = [1,2,3,4];
var obj = {name:"張三",age:12}
console.log(arr);
console.log(obj);
輸出效果如下圖:
但是如果將數(shù)組或?qū)ο笤谖谋局休敵龅脑挘瑪?shù)組和對象會(huì)默認(rèn)調(diào)用自己原型中的toString方法,以字符串形式顯示在文本中,例:
var arr = [1,2,3,4];
var obj = {name:"張三",age:12}
document.write(arr)
document.write(obj)
文本中顯示如下:
數(shù)組和對象其實(shí)已經(jīng)調(diào)用了他們原型上的toString方法,被轉(zhuǎn)為了字符串,例:
var arr = [1,2,3,4];
var obj = {name:"張三",age:12}
console.log(arr.toString());
console.log(obj.toString());
控制臺顯示如下圖:
隱形轉(zhuǎn)換在多處出現(xiàn),我們在編程的時(shí)候,需要謹(jǐn)慎小心,熟悉后可以對之進(jìn)行利用,例如判斷一個(gè)數(shù)據(jù)或?qū)ο笾械闹凳欠翊嬖跁r(shí),可以利用分支語句的條件中的隱形轉(zhuǎn)換來搞定。
<form></form>定義表單的開始位置和結(jié)束位置,表單提交時(shí)的內(nèi)容就是<form>表單中的內(nèi)容
<form action="服務(wù)器端地址(接受表單內(nèi)容的地址)" name="表單名稱" method="post|get">...</form>
表單名稱
傳送數(shù)據(jù)的方式,分為post和get兩種方式:
表單數(shù)據(jù)的處理程序的URL地址,如果為空則使用當(dāng)前文檔的URL地址,如果表單中不需要使用action屬性也要指定其屬性為”no“。
設(shè)置表單的資料的編碼方式。屬性值:
和超鏈接的屬于類似,用來指定目標(biāo)窗口。
input 標(biāo)記沒有結(jié)束標(biāo)記。
<input type="" name="" value="" size="" maxlength="">
定義控件的名稱
初始化值,打開瀏覽器時(shí),文本框中的內(nèi)容
設(shè)置控件的長度
輸入框中最大允許輸入的字符數(shù)
使用 textarea 標(biāo)記可以實(shí)現(xiàn)一個(gè)能夠輸入多行文本的區(qū)域。
rows屬性和cols屬性分別用來指定,顯示的行數(shù)和列數(shù),單位是字符個(gè)數(shù);value指定傳送到服務(wù)器上面的值。
<textarea name="name" rows="value" cols="value" value="value">... ... </textarea>
菜單下拉列表域,生成一個(gè)下拉列表。
作用:
option 標(biāo)記用來指定列表中的一個(gè)選項(xiàng),需要放在 select 之間。
值:
<select name="" size="value" multiple> <option value="value1" selected>選項(xiàng)1</option> <option value="value2">選項(xiàng)2</option> <option value="value3">選項(xiàng)3</option> ... ... ...</select>
用于綁定一個(gè)表單元素, 當(dāng)點(diǎn)擊label標(biāo)簽的時(shí)候, 被綁定的表單元素就會(huì)獲得輸入焦點(diǎn)
<label for="male">Male</label><input type="radio" name="sex" id="male">
<form name="form" method="post" action="no" enctype="multipart/form-data"> <label for="male">賬號:</label><input type="text" name="username" value="admin" id="male"><br> 密碼:<input type="password" name="password" size="50" maxlength="6"><br> 性別:<input type="radio" name="sex" value="男"> 男 <input type="radio" name="sex" value="女" checked="checked"> 女<br> 興趣:<input type="checkbox" name="interest" value="籃球">籃球 <input type="checkbox" name="interest" value="足球" checked="checked">足球 <input type="checkbox" name="interest" value="羽毛球" checked="checked">羽毛球 <input type="hidden" name="hidden"><br> 頭像:<input type="file" name="file"><br> 簡介: <textarea rows="10" cols="30"> </textarea><br> 城市: <select name="city" multiple> <option value="beijing">北京</option> <option value="shanghai" selected>上海</option> <option value="nanjing">南京</option> <option value="guangdong">廣東</option> </select> <br> <input type="submit" value="注冊"> <input type="reset"> <input type="button" value="普通按鈕"></form>
前幾篇中,我們已經(jīng)學(xué)習(xí)了如何在Python中表示字符串、數(shù)值、邏輯值等字面值數(shù)據(jù)。也學(xué)習(xí)了如何使用變量引用這些數(shù)據(jù)。
本文開始學(xué)習(xí)如何操作這些數(shù)據(jù)。操作數(shù)據(jù)最常用的方式是使用運(yùn)算符。運(yùn)算符即對數(shù)據(jù)進(jìn)行運(yùn)算的符號,我們在小學(xué)時(shí)學(xué)過的加減乘除就是最簡單的運(yùn)算符。
運(yùn)算符的語法規(guī)則包括運(yùn)算符的功能和優(yōu)先級兩個(gè)要點(diǎn)。
Python運(yùn)算符功能根據(jù)操作數(shù)的類型可以分為賦值運(yùn)算符、算術(shù)運(yùn)算符、邏輯運(yùn)算符、比較運(yùn)算符、成員運(yùn)算符、位運(yùn)算符、身份運(yùn)算符幾類。
在編程中,最常用的運(yùn)算符是賦值運(yùn)算符,賦值運(yùn)算符用一個(gè)等于號表示,其使用基本格式如下:
變量 = 表達(dá)式
其功能是將表達(dá)式的值賦予變量。
其中變量一般是字面值和簡單數(shù)據(jù)類型引用變量,也可以是對象的引用變量,還可以是對象的可寫屬性。關(guān)于變量的概念參見Python教程:第8篇 變量。
其中表達(dá)式是具有返回值的字面量、常量、變量、函數(shù)、語句以及運(yùn)算符等的組合,一個(gè)單獨(dú)的字面量、變量、常量也是表達(dá)式,稱為簡單表達(dá)式,也稱基本表達(dá)式。使用運(yùn)算符連接的表達(dá)式稱為復(fù)雜表達(dá)式。
下面是一些簡單的賦值示例,它們分別將字符串、數(shù)值、邏輯值賦予變量a,并在賦值后輸出a的值:
注意,Python的賦值運(yùn)算符沒有返回值。這點(diǎn)與C語言不同。Python的函數(shù)參數(shù)可以使用賦值語句,并不是因?yàn)檫@個(gè)原因。而是用于區(qū)分哪個(gè)參數(shù),參數(shù)的順序可以錯(cuò)亂的。
如果將賦值表達(dá)式作為返回值賦予另一個(gè)變量,會(huì)產(chǎn)生語法錯(cuò)誤:
也不能將其作為print函數(shù)的參數(shù)打印輸出:
另一個(gè)需要注意的是,在Python中,變量的賦值是將對象的引用(指對象在內(nèi)存中的地址,id函數(shù)可以返回它)傳給變量,而不是傳遞值,比如下面的示例,a和b是兩個(gè)變量,b最初的值由a賦值得到,但它們都指向同一個(gè)對象(這里是下面的編程名言字符串),b重新賦值之后,其指向改變了,內(nèi)存地址不再與a相同。
從 Python 2.0 開始, 等號可以和另一個(gè)運(yùn)算符(一般是算術(shù)運(yùn)算符)組合在一起, 將計(jì)算結(jié)果重新賦值給左邊的變量。這被稱為增量賦值。 類似下面這樣的語句:
變量 = 變量 + 表達(dá)式
現(xiàn)在可以寫成:
變量 += 表達(dá)式
增量賦值通過使用賦值運(yùn)算符,將數(shù)學(xué)運(yùn)算隱藏在賦值過程當(dāng)中。你可能在 C、C++、Java、JavaScript代碼中見過以下增量運(yùn)算符:
+= -= *= /= %= **=
<<= >>= &= ^= |=
增量賦值相對普通賦值的最主要的好處是可以帶來運(yùn)行效率上的提升:變量僅被修改一次,而普通賦值會(huì)被修改兩次。
以下是增量賦值的常見應(yīng)用示例:
賦值運(yùn)算符一般與算術(shù)運(yùn)算符(加減乘除、乘方、整除等)組成增量賦值,也可與位運(yùn)算符組合:
但不支持比較運(yùn)算符(比較大小的,比如大于等于>=)等運(yùn)算符,下面是示例:
由于+、*也可用于字符串、列表等操作,所以增量賦值也可適用于字符串等數(shù)據(jù)的賦值:
從字符串的增量賦值結(jié)果來看,變量原來的值位于增量賦值后的前面,這一點(diǎn)也是需要注意的。
也可以使用下面的格式為多個(gè)變量賦予相同的值:
變量 = 變量 = 表達(dá)式
其中“變量 =”可以無限重復(fù)添加,下面是個(gè)示例(a、b、c的值都為表達(dá)式的返回值):
要注意的是,使用連續(xù)賦值時(shí)不能使用增量賦值,下面第2行第2個(gè)賦值號產(chǎn)生了語法錯(cuò)誤:
元組是Python中一種用小括號包圍的數(shù)據(jù)列表表示的基本數(shù)據(jù)類型(以后會(huì)介紹),但在賦值操作中,可以省略兩端的小括號,所以你以后可能會(huì)常看到類似于以下形式的代碼,它可以交換兩個(gè)變量的值:
變量1,變量2 = 變量2,變量1
它實(shí)際上是下面元組賦值的縮寫:
(變量1,變量2) = (變量2,變量1)
下面是個(gè)應(yīng)用示例:
這是Python支持的特殊的交換兩個(gè)變量的值的方式,在許多其他編程語言中,你需要定義一個(gè)中間變量,首先將第1個(gè)變量賦值給中間變量,然后將第2個(gè)變量賦值給第1個(gè)變量,最后將中間變量賦值給第2個(gè)變量,才能實(shí)現(xiàn)交換兩個(gè)變量值的目的,下面是Python(也是其他語言都支持的)這種方式的應(yīng)用示例:
關(guān)于運(yùn)算符的內(nèi)容還有很多,歡迎各位讀者多多評論互動(dòng),也可關(guān)注我,下篇教程我將盡快推出。
注:從2022年4月28日發(fā)布的本篇教程開始,代碼截圖加上了使用了隨機(jī)生成的背景圖。寬度統(tǒng)一為970像素,這是在1080px寬度手機(jī)上顯示的原始寬度,以提高各位讀者的閱讀觀感。語法高亮風(fēng)格采用 Python3.10.4 的 IDLE 顯示的風(fēng)格,由于水平有限,注釋高亮的功能還沒有實(shí)現(xiàn)。
在Python中,數(shù)據(jù)如何表示可以參閱:
「Python教程」第6篇 Python基本語法之字符串
「Python教程」第7篇 Python基本語法之?dāng)?shù)值與邏輯值
*請認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。